Hardcore Doom Wiki hardcoredoom_en https://hardcoredoom.wiki.gg/ MediaWiki 1.43.5 first-letter Media Special Talk User User talk Meta Meta talk File File talk MediaWiki MediaWiki talk Template Template talk Help Help talk Category Category talk Module Module talk Main Page 0 1 1 2025-11-02T00:43:30Z ARTIFICER 564804 Importing default loadout wikitext text/x-wiki #redirect [[Hardcore Doom Wiki]] 98d853ef150e871278a88f942ec06fd59590b7ca 2 1 2025-11-02T00:43:31Z ARTIFICER 564804 Protected "[[Main Page]]" ([Edit=Allow only administrators] (indefinite) [Rename=Allow only administrators] (indefinite)) wikitext text/x-wiki #redirect [[Hardcore Doom Wiki]] 98d853ef150e871278a88f942ec06fd59590b7ca Hardcore Doom Wiki 0 2 3 2025-11-02T00:43:31Z ARTIFICER 564804 Importing default loadout wikitext text/x-wiki <!-- Hello and welcome to wiki.gg! This page is built via our IMProved Main Page (IMP) framework. If you are familiar with CSS grid areas, that's what you're defining here! But if you don't know any CSS that's ok! 👀 RULE 1: the same keyword represents the same section & can span multiple cells 👀 RULE 2: Each box in each layout must be a CONTIGUOUS RECTANGLE of any dimensions (most likely one of: 1x1, 1x2, 2x1, 2x2, 1x3, 3x1, 3x2, 2x3) 👀 RULE 3: This page defines LAYOUT ONLY. To edit the content, please use the links provided for you after saving/previewing your page. 👀 RULE 4: If you want to RENAME or ADD a box, (1) add a new section to the grid layout below (all three breakpoints!) and then (2) save or preview this page and then (3) click "Create this box" -->{{Main page |desktop= <!-- for WIDE SCREENS --> <!-- 👀 keep this at 3 columns, but you can otherwise rearrange as desired --> welcome welcome welcome about pages pages contribute contribute external <!-- end WIDE SCREEN layout --> |tablet= <!-- for TABLET SCREENS --> <!-- 👀 keep this at 2 columns, but you can otherwise rearrange as desired --> welcome welcome about pages contribute external <!-- end TABLET SCREEN layout --> |mobile= <!-- for MOBILE DEVICES --> <!-- 👀 keep this at 1 column, but you can otherwise rearrange as desired --> welcome about pages external contribute <!-- end MOBILE DEVICE layout --> }} {{#description2:Welcome to the {{SITENAME}}, a collaborative wiki resource that is open for anyone to edit!}} <!-- this is a short description of your wiki, which will appear in embeds in Google search results, Discord links, etc. --> c5d4351377806d884e84bc34774f85fd4a425e0a 4 3 2025-11-02T00:43:31Z ARTIFICER 564804 Protected "[[Hardcore Doom Wiki]]" ([Edit=Allow only administrators] (indefinite) [Rename=Allow only administrators] (indefinite)) wikitext text/x-wiki <!-- Hello and welcome to wiki.gg! This page is built via our IMProved Main Page (IMP) framework. If you are familiar with CSS grid areas, that's what you're defining here! But if you don't know any CSS that's ok! 👀 RULE 1: the same keyword represents the same section & can span multiple cells 👀 RULE 2: Each box in each layout must be a CONTIGUOUS RECTANGLE of any dimensions (most likely one of: 1x1, 1x2, 2x1, 2x2, 1x3, 3x1, 3x2, 2x3) 👀 RULE 3: This page defines LAYOUT ONLY. To edit the content, please use the links provided for you after saving/previewing your page. 👀 RULE 4: If you want to RENAME or ADD a box, (1) add a new section to the grid layout below (all three breakpoints!) and then (2) save or preview this page and then (3) click "Create this box" -->{{Main page |desktop= <!-- for WIDE SCREENS --> <!-- 👀 keep this at 3 columns, but you can otherwise rearrange as desired --> welcome welcome welcome about pages pages contribute contribute external <!-- end WIDE SCREEN layout --> |tablet= <!-- for TABLET SCREENS --> <!-- 👀 keep this at 2 columns, but you can otherwise rearrange as desired --> welcome welcome about pages contribute external <!-- end TABLET SCREEN layout --> |mobile= <!-- for MOBILE DEVICES --> <!-- 👀 keep this at 1 column, but you can otherwise rearrange as desired --> welcome about pages external contribute <!-- end MOBILE DEVICE layout --> }} {{#description2:Welcome to the {{SITENAME}}, a collaborative wiki resource that is open for anyone to edit!}} <!-- this is a short description of your wiki, which will appear in embeds in Google search results, Discord links, etc. --> c5d4351377806d884e84bc34774f85fd4a425e0a Example character 0 3 5 2025-11-02T00:43:31Z ARTIFICER 564804 Importing default loadout wikitext text/x-wiki {{Example character infobox |title=Dragon |image=Example character image.png |Region=Shurima |Element=Fire |Attack=51 |HP=85 |Armor=34 |Attack Speed=78 }} Please note, this is NOT content related to {{SITENAME}}. It is an example page for the demonstration of [[support:DRUID infoboxes|DRUID infoboxes]]. Please delete this page at your earliest convenience! To edit how the infobox works, please see {{tl|Example character infobox}}. == About == The '''Example Character''' is a very cool character found in the Default Loadout Wiki. It is a dragon that can camouflage itself as a flower due to inventive and scientific reasons, and not because the artist is bad at drawing dragons. == Combat == The Example Character has several attacks, including: * Disguise Self As Flower * Flame Breath * Sneak Attack * Fireball * Dawizard == Dragon Riding == If the player tames the Example Character, they can perform several Dragon Riding stunts. See [[Dragon Riding]] for more information. == Levels == Example Character can be found in the following levels: * [[Introduction]] * [[Level 1]] * [[Level 3]] * [[Level 5]] * [[Bonus Content 6]] [[Category:Characters]] 5feed3ead005cb5ca4b2ecf1f3745925d2b8b41d Hardcore Doom Wiki/welcome 0 4 6 2025-11-02T00:43:32Z ARTIFICER 564804 Importing default loadout wikitext text/x-wiki {{Main page box/start | title = Welcome to the {{SITENAME}}! }} We are currently maintaining [[Special:AllPages|{{NUMBEROFARTICLES}} articles]]. Please feel free to contribute by creating new articles or expanding existing ones. {{Main page box/end}}<noinclude>[[Category:Main page boxes]]</noinclude><!-- don't edit this line --> 96df981ef23fca9434d1586228cab8a51e0fdc0a 7 6 2025-11-02T00:43:32Z ARTIFICER 564804 Protected "[[Hardcore Doom Wiki/welcome]]" ([Edit=Allow only administrators] (indefinite) [Rename=Allow only administrators] (indefinite)) wikitext text/x-wiki {{Main page box/start | title = Welcome to the {{SITENAME}}! }} We are currently maintaining [[Special:AllPages|{{NUMBEROFARTICLES}} articles]]. Please feel free to contribute by creating new articles or expanding existing ones. {{Main page box/end}}<noinclude>[[Category:Main page boxes]]</noinclude><!-- don't edit this line --> 96df981ef23fca9434d1586228cab8a51e0fdc0a Hardcore Doom Wiki/pages 0 5 8 2025-11-02T00:43:32Z ARTIFICER 564804 Importing default loadout wikitext text/x-wiki {{Main page box/start | title = Useful wiki pages | class = centered-content }} <div class="mp-links columns-2"> * {{MP link| Important page here |image=Wiki.gg logo-pink.svg |size=92px }} * {{MP link| Random page |link=Special:Random }} * {{MP link| Example character |link=Example character |image=Example_character_image.png |size=92px }} * {{MP link| Example character infobox |link=Template:Example character infobox |image=Example_character_image.png |size=92px }} </div> {{Main page box/end}}<noinclude>[[Category:Main page boxes]]</noinclude><!-- don't edit this line --> ff903789d455ece7d683710b69c443a5904780b8 9 8 2025-11-02T00:43:33Z ARTIFICER 564804 Protected "[[Hardcore Doom Wiki/pages]]" ([Edit=Allow only administrators] (indefinite) [Rename=Allow only administrators] (indefinite)) wikitext text/x-wiki {{Main page box/start | title = Useful wiki pages | class = centered-content }} <div class="mp-links columns-2"> * {{MP link| Important page here |image=Wiki.gg logo-pink.svg |size=92px }} * {{MP link| Random page |link=Special:Random }} * {{MP link| Example character |link=Example character |image=Example_character_image.png |size=92px }} * {{MP link| Example character infobox |link=Template:Example character infobox |image=Example_character_image.png |size=92px }} </div> {{Main page box/end}}<noinclude>[[Category:Main page boxes]]</noinclude><!-- don't edit this line --> ff903789d455ece7d683710b69c443a5904780b8 Hardcore Doom Wiki/about 0 6 10 2025-11-02T00:43:33Z ARTIFICER 564804 Importing default loadout wikitext text/x-wiki {{Main page box/start | title = About Hardcore Doom }} This is an example main page. You can redesign it however you want, or you can keep the layout the same but change the contents (e.g. this part should talk about your game). Take a look at some other wiki.gg wikis for inspiration! <div style="text-align:right">[[Hardcore Doom|Read more...]]</div> {{Main page box/end}}<noinclude>[[Category:Main page boxes]]</noinclude><!-- don't edit this line --> b6c460a262db312e8788d5b1132a24c368a332d0 11 10 2025-11-02T00:43:33Z ARTIFICER 564804 Protected "[[Hardcore Doom Wiki/about]]" ([Edit=Allow only administrators] (indefinite) [Rename=Allow only administrators] (indefinite)) wikitext text/x-wiki {{Main page box/start | title = About Hardcore Doom }} This is an example main page. You can redesign it however you want, or you can keep the layout the same but change the contents (e.g. this part should talk about your game). Take a look at some other wiki.gg wikis for inspiration! <div style="text-align:right">[[Hardcore Doom|Read more...]]</div> {{Main page box/end}}<noinclude>[[Category:Main page boxes]]</noinclude><!-- don't edit this line --> b6c460a262db312e8788d5b1132a24c368a332d0 Hardcore Doom Wiki/contribute 0 7 12 2025-11-02T00:43:34Z ARTIFICER 564804 Importing default loadout wikitext text/x-wiki {{Main page box/start | title = Contribute to the wiki }} {{SITENAME}} is a collaborative wiki resource that is open for anyone to edit. You don't need special permission beyond [[Special:UserLogin/signup|registering]] an account to edit most pages, and your contributions can grow the wiki and help other players. ; Adding content :* If you are unsure of what to do or how to create a page, search for a few articles on the same topic and see what they look like. You can always view the source code in a wiki and learn from what others have done. :* An edit doesn't have to be massive; if you feel you don't want to create whole articles, then just fixing spelling errors and broken links is enough. :* [[Special:UserLogin/signup|Register]] to edit and track your contributions. {{Main page box/end}}<noinclude>[[Category:Main page boxes]]</noinclude><!-- don't edit this line --> 8b79debc73480ec2b12cb5e39723b94532fd44bd 13 12 2025-11-02T00:43:34Z ARTIFICER 564804 Protected "[[Hardcore Doom Wiki/contribute]]" ([Edit=Allow only administrators] (indefinite) [Rename=Allow only administrators] (indefinite)) wikitext text/x-wiki {{Main page box/start | title = Contribute to the wiki }} {{SITENAME}} is a collaborative wiki resource that is open for anyone to edit. You don't need special permission beyond [[Special:UserLogin/signup|registering]] an account to edit most pages, and your contributions can grow the wiki and help other players. ; Adding content :* If you are unsure of what to do or how to create a page, search for a few articles on the same topic and see what they look like. You can always view the source code in a wiki and learn from what others have done. :* An edit doesn't have to be massive; if you feel you don't want to create whole articles, then just fixing spelling errors and broken links is enough. :* [[Special:UserLogin/signup|Register]] to edit and track your contributions. {{Main page box/end}}<noinclude>[[Category:Main page boxes]]</noinclude><!-- don't edit this line --> 8b79debc73480ec2b12cb5e39723b94532fd44bd Hardcore Doom Wiki/external 0 8 14 2025-11-02T00:43:34Z ARTIFICER 564804 Importing default loadout wikitext text/x-wiki {{Main page box/start | title = External links }} <div class="mp-links columns-2"> * {{MP link| Official site |link=https://wiki.gg }} * {{MP link| Discord |link=https://discord.gg/rTnST57tuW |image=Discord.svg |size=64x64px }} * {{MP link| Bluesky |link=https://bsky.app/profile/wiki.gg |image=Bluesky.svg |size=64x64px }} * {{MP link| indie.io |link=https://www.indie.io/ |image=indie.io.svg |size=64x64px }} </div> {{Main page box/end}}<noinclude>[[Category:Main page boxes]]</noinclude><!-- don't edit this line --> b7fa73b602a5aecb89c1bd4cd7f97a97a9c8d884 15 14 2025-11-02T00:43:34Z ARTIFICER 564804 Protected "[[Hardcore Doom Wiki/external]]" ([Edit=Allow only administrators] (indefinite) [Rename=Allow only administrators] (indefinite)) wikitext text/x-wiki {{Main page box/start | title = External links }} <div class="mp-links columns-2"> * {{MP link| Official site |link=https://wiki.gg }} * {{MP link| Discord |link=https://discord.gg/rTnST57tuW |image=Discord.svg |size=64x64px }} * {{MP link| Bluesky |link=https://bsky.app/profile/wiki.gg |image=Bluesky.svg |size=64x64px }} * {{MP link| indie.io |link=https://www.indie.io/ |image=indie.io.svg |size=64x64px }} </div> {{Main page box/end}}<noinclude>[[Category:Main page boxes]]</noinclude><!-- don't edit this line --> b7fa73b602a5aecb89c1bd4cd7f97a97a9c8d884 Meta:Copyrights 4 9 16 2025-11-02T00:43:35Z ARTIFICER 564804 Importing default loadout wikitext text/x-wiki <!--''[[GAME]]'' content and materials are the intellectual property of their respective owners. -->Content that you make available on {{SITENAME}} is licensed by you to us under our [{{int:wikigg-tos-url}} Terms of Service]. Do not make content available on {{SITENAME}} where you do not have the necessary rights to grant this license. All textual and graphical content on {{SITENAME}} that we may lawfully license is licensed to you under the [https://creativecommons.org/licenses/by-sa/4.0 Creative Commons Attribution-ShareAlike 4.0] license. [[Category:Legal notices]] a5c705cf276359aef94d426ee75d18bbf1e361ac 17 16 2025-11-02T00:43:35Z ARTIFICER 564804 Protected "[[Meta:Copyrights]]" ([Edit=Allow only administrators] (indefinite)) wikitext text/x-wiki <!--''[[GAME]]'' content and materials are the intellectual property of their respective owners. -->Content that you make available on {{SITENAME}} is licensed by you to us under our [{{int:wikigg-tos-url}} Terms of Service]. Do not make content available on {{SITENAME}} where you do not have the necessary rights to grant this license. All textual and graphical content on {{SITENAME}} that we may lawfully license is licensed to you under the [https://creativecommons.org/licenses/by-sa/4.0 Creative Commons Attribution-ShareAlike 4.0] license. [[Category:Legal notices]] a5c705cf276359aef94d426ee75d18bbf1e361ac Module:Infobox 828 10 18 2025-11-02T00:43:36Z ARTIFICER 564804 Importing default loadout Scribunto text/plain -- version 0.1.9 -------------------------------------- -- User settings, you can modify these -------------------------------------- -- if you want to not always use divs in your wiki (as opposed to tables), you can change this default -- just remember to change it back each time you update from the main "branch" on the support wiki! -- you can also control it per infobox with `|useDivs=yes` or `|useDivs=no` local USE_DIVS = true -- `false` or `true` -- default value to show if a param is missing in some but not all tabs. -- set to `nil` (not in quotes) to remove such rows altogether in the tabs where they're missing local TABBED_NONEXIST = nil -- `''` or `nil` or `'N/A'` etc. Don't put nil in quotes. --------------------------------------------------------------------------- -- Do not modify anything below this line unless you know what you're doing --------------------------------------------------------------------------- local h = {} local p = {} local hooks = {} function p.arraymap(frame) -- a lua implementation of Page Forms' arraymap local args = h.overwrite() local items = h.split(args[1], args[2] or ',') for i, item in ipairs(items) do items[i] = args[4]:gsub(args[3], item) end return table.concat(items, args[5] or ',') end function p.preprocess(frame) return frame:preprocess(frame.args[1] or frame:getParent().args[1]) end function p.main(frame) h.registerHooks() h.increment() local args = h.overwrite() local sep = args.sep or ',' h.castArgs(args, sep) if h.castBool(args.setmainimage or 'yes') then h.setMainImage(args.images[1]) end -- suggest to use HIDDENCAT here; will be used for maintenance & gadget imports return h.makeInfobox(args, sep), '[[Category:Pages with DRUID infoboxes]]' end function h.registerHooks() if not mw.title.new('Module:Infobox/Hooks').exists then return end hooks = require('Module:Infobox/Hooks') end function h.runHook(key, ...) if hooks[key] then hooks[key](...) end end function h.increment() -- optional use of VariablesLua for better compatibility local VariablesLua = mw.ext.VariablesLua if VariablesLua ~= nil then h.counter = VariablesLua.var('DRUID_INFOBOX_ID', 0) + 1 VariablesLua.vardefine('DRUID_INFOBOX_ID', h.counter) return end local res -- try to fall back to normal Variables res, h.counter = pcall( function() return mw.getCurrentFrame():callParserFunction('#var', {'DRUID_INFOBOX_ID', 0}) + 1 end ) if res then mw.getCurrentFrame():callParserFunction('#vardefine', {'DRUID_INFOBOX_ID', h.counter}) else -- else use a random number so at least there's some unique id h.counter = math.random(100000000000000000) -- random integer end end function h.castArgs(args, sep) h.runHook('onCastArgsStart', args, sep, args.kind) args.tabs = h.split(args.tabs or args.image_labels, sep) args.images = h.getImages(args, sep) args.sections = h.split(args.sections, sep) for _, section in ipairs(args.sections) do if h.castBool(args[section .. '_isdata']) then args[section .. 'Data'] = args[section] args[section] = section .. 'Data' args[section .. 'Data_nolabel'] = 'true' -- will be cast later end args[section] = h.split(args[section], sep) args[section .. '_tabs'] = h.split(args[section .. '_tabs'], sep) if #args.tabs > 0 and #args[section .. '_tabs'] > 0 then error(('You cannot specify |tabs= and |%s= at the same time, please pick one'):format(section .. '_tabs')) end end if args.useDivs then USE_DIVS = h.castBool(args.useDivs) end -- this would be in the outer scope, but we're hiding it h.entityType = USE_DIVS and 'div' or 'table' -- key of h.htmlEntities h.runHook('onCastArgsEnd', args, sep, args.kind) h.focusTab(args) end function h.getImages(args, sep) if args.image and not args.images then args.images = args.image end if args.images then return h.split(args.images, sep) end if not args.tabs then return {} end local ret = {} for _, key in ipairs(args.tabs) do if args[key .. '_image'] then ret[#ret+1] = args[key .. '_image'] end end return ret end function h.setMainImage(file) if h.counter > 1 then return end if not file then return end local fileText = file:gsub('.-:', '') fileText = fileText:gsub('^([^|%]]+).*', '%1') -- setmainimage is guaranteed to exist on wiki.gg but may not exist on other wikis -- it's not a crucial piece of functionality so we'll fail silently if it doesn't exist pcall(function() mw.getCurrentFrame():callParserFunction{ name = '#setmainimage', args = { fileText }, } end) end function h.focusTab(args) local hasFocusedTab = false if not args.tabs[1] then return end for i, tab in ipairs(args.tabs) do if h.castBool(args[tab .. '_focused']) then hasFocusedTab = true args[tab .. '_focused'] = true -- cast to bool else args[tab .. '_focused'] = false end end if hasFocusedTab then return end args[args.tabs[1] .. '_focused'] = true end function h.makeInfobox(args, sep) local out = mw.html.create(h.getTag('container')) :addClass('druid-infobox') :addClass('druid-container') :addClass('noexcerpt') :addClass(args.class) -- warning: class can be nil, don't concat anything :attr('id', args.id or ('druid-container-' .. h.counter)) h.runHook('onMakeOutputStart', out, args) if args.kind then out:addClass('druid-container-' .. h.escape(args.kind)) end h.printTitle(out, args) h.printImages(out, args.images, args) for _, section in ipairs(args.sections) do -- cannot begin tagging here because we don't know if any applicable args are present local cols = args[section .. '_columns'] local makeSection = cols and h.makeGridSection or h.makeSection out:node(makeSection(section, args[section], args, tonumber(cols))) end h.runHook('onMakeOutputEnd', out, args) -- category for gadget loading return out, '[[Category:Pages with DRUID infoboxes]]' end function h.printTitle(out, args) local tabs = args.tabs if not tabs or #tabs == 0 then h.printSimpleTitle(out, args) return end if not h.hasComplexData('title', tabs, args) then h.printSimpleTitle(out, args) return end local node = h.printTitleWrapper(out) h.printTabbedDataItem(node, 'title', tabs, args) end function h.printSimpleTitle(out, args) if args.title then local node = h.printTitleWrapper(out) node:wikitext(args.title) end end function h.printTitleWrapper(out) return out:tag(h.getTag('titleOuter')) :tag(h.getTag('titleInner')) :addClass('druid-title') :attr('colspan', 2) end function h.printTabbedDataItem(node, item, tabs, args) -- hasData isn't used in the title case but we will need to track this -- when we're printing section data later on -- so we'll just track it always local hasData = false for i, label in ipairs(tabs) do local div = node:tag('div') :addClass('druid-toggleable-data') :addClass('druid-toggleable') :attr('data-druid', h.counter .. '-' .. i) :attr('data-druid-tab-key', label) if h.getTabbedContent(args, label, item) then hasData = true div:wikitext('\n\n' .. h.getTabbedContent(args, label, item)) div:addClass('druid-toggleable-data-nonempty') else div:addClass('druid-toggleable-data-empty') end if args[label .. '_focused'] then div:addClass('focused') end end return hasData end function h.printImages(out, images, args) if #images == 0 and #args.tabs == 0 then return end -- burden is on the user to format this as an image. this should be done in the infobox template, -- with something like |image={{#if:{{{image|}}}|[[File:{{{image|}}}{{!}}300px{{!}}link=]]}} local td = out:tag(h.getTag('section')) :addClass('druid-section-container') :tag(h.getTag('cell')) :attr('colspan', 2) local tabs = args.tabs local tabTexts = h.getImageTabTexts(tabs, images, args) h.printTabs(td, tabs, tabTexts, false, args) if #images == 0 then return end if #images == 1 then td:addClass('druid-main-image') :wikitext(images[1]) if args.caption then td:tag('div') :addClass('druid-main-image-caption') :wikitext(args.caption) end return end td:addClass('druid-main-images') local imagesContainer = td:tag('div') :addClass('druid-main-images-files') for i, image in ipairs(images) do local container = imagesContainer:tag('div') :addClass('druid-main-images-file') :addClass('druid-toggleable') :attr('data-druid', h.counter .. '-' .. i) :wikitext(image) :attr('data-druid-tab-key', tabs[i]) local labelDisplay local labelKey = tabs[i] if labelKey then labelDisplay = args[labelKey .. '_label'] or labelKey else labelDisplay = '[[Category:Infoboxes missing image labels]]Image ' .. i end local caption = args[labelDisplay .. '_caption'] or args[labelKey .. '_caption'] or args.caption if caption then container:tag('div') :addClass('druid-main-images-caption') :wikitext(caption) end if args[labelKey .. '_focused'] then container:addClass('focused') end end end function h.getImageTabTexts(tabs, images, args) if #tabs == 0 and #images <= 1 then return {} end local texts = {} local i = 1 while images[i] or tabs[i] do if tabs[i] then texts[i] = args[tabs[i] .. '_label'] or tabs[i] else texts[i] = '[[Category:Infoboxes missing image labels]]Image ' .. i end i = i + 1 end return texts end function h.printTabs(td, tabs, texts, isSection, args) if #texts == 0 then return end local container = td:tag('div') :addClass('druid-main-images-labels') :addClass('druid-tabs') if isSection then container:addClass('druid-section-tabs') end for i, item in ipairs(tabs) do local label = container:tag('div') :addClass('druid-main-images-label') :addClass('druid-tab') :addClass('druid-toggleable') :attr('data-druid', h.counter .. '-' .. i) :wikitext(texts[i]) :attr('data-druid-tab-key', item) if isSection then label:addClass('druid-section-tab') else label:addClass('druid-title-tab') end if args[item .. '_focused'] then label:addClass('focused') end -- this can be null, don't concat anything here label:addClass(args[item .. '_class']) end end function h.makeGridSection(section, sectionFields, args, numCols) local numItems = h.countItems(sectionFields, section, args) if numItems == 0 then return end local node = mw.html.create(h.getTag('section')) :addClass('druid-section-container') h.printSectionHeader(node, section, args) h.printSectionTabs(node, section, args) local tr = node:tag(h.getTag('row')) :attr('data-druid-section-row', h.escape(section)) if args[section .. '_collapsed'] then tr:addClass('druid-collapsed') end local grid = tr:tag(h.getTag('cell')) :attr('colspan', 2) :addClass('druid-grid-section') :addClass('druid-grid-section-' .. h.escape(section)) :addClass(args[section .. '_class']) -- warning: class can be nil, don't concat anything :tag('div') :addClass('druid-grid') local row, col, i = 1, 1, 1 local sizeOfLastRow = numItems % numCols local lcm = h.getNumGridCols(numItems, sizeOfLastRow, numCols) grid:css('grid-template-columns', ('repeat(%s, 1fr)'):format(lcm)) local size = lcm / numCols for _, item in ipairs(sectionFields) do local node = mw.html.create('div') local shouldPrint = h.printData(node, item, section, args) if shouldPrint then if i == numItems - sizeOfLastRow + 1 then size = lcm / sizeOfLastRow end i = i + 1 local gStart = (col - 1) * size + 1 local gEnd = (col) * size + 1 local itemContainer = grid:tag('div') :addClass('druid-grid-item') :addClass('druid-grid-item-' .. h.escape(item)) :addClass(args[item .. '_class']) -- warning: class can be nil, don't concat anything :css('grid-column', ('%s / %s'):format(gStart, gEnd)) :css('grid-row', row) if not h.castBool(args[item .. '_nolabel']) then h.printLabel(itemContainer:tag('div'), item, args) end itemContainer:node(node) if col == numCols then row = row + 1 col = 1 else col = col + 1 end end end return node end function h.makeSection(section, sectionFields, args) if section == '' then return end -- bruteforce fix for trailing commas local shouldPrint = false local container = mw.html.create(h.getTag('section')) :addClass('druid-section-container') :addClass(args[section .. '_class']) -- warning: class can be nil, don't concat anything h.printSectionHeader(container, section, args) h.printSectionTabs(container, section, args) for _, item in ipairs(sectionFields) do local node = mw.html.create(h.getTag('cell')) local shouldPrintItem = h.printData(node, item, section, args) if shouldPrintItem then shouldPrint = true local tr = container:tag(h.getTag('row')) :addClass('druid-row') :addClass('druid-row-' .. h.escape(item)) :addClass(args[item .. '_class']) -- warning: class can be nil, don't concat anything :attr('data-druid-section-row', h.escape(section)) if args[section .. '_collapsed'] then tr:addClass('druid-collapsed') end if h.castBool(args[item .. '_wide']) or h.castBool(args[item .. '_nolabel']) then node :attr('colspan', 2) :addClass('druid-data-wide') else h.printLabel(tr:tag(h.getTag('label')), item, args) end tr:node(node) end end if not shouldPrint then return nil end return container end function h.countItems(sectionFields, section, args) local numItems = 0 for _, v in ipairs(sectionFields) do -- we aren't actually printing here, but we're finding out if we should print anything -- because we need the count of columns before we print anything in grid data if h.printData(mw.html.create(), v, section, args) then numItems = numItems + 1 end end return numItems end function h.getNumGridCols(numItems, sizeOfLastRow, numCols) if not numCols then return numItems, 1 end if numItems < numCols then return numItems, 1 end if sizeOfLastRow == 0 then return numCols, 1 end local a, b = sizeOfLastRow, numCols while b ~= 0 do a, b = b, a % b end local lcm = sizeOfLastRow * numCols / a return lcm end function h.printLabel(node, item, args) return node :addClass('druid-label') :addClass('druid-label-' .. h.escape(item)) :wikitext(args[item .. '_display'] or args[item .. '_label'] or item) end function h.printData(node, item, section, args) -- prints data to the node -- and also returns whether the item is nonempty or not local hasData = false local sectionTabs = args[section .. '_tabs'] local tabs = args.tabs if sectionTabs and #sectionTabs > 0 then tabs = sectionTabs end if not tabs or #tabs == 0 then return h.printSimpleData(node, item, args) end if not h.hasComplexData(item, tabs, args) then return h.printSimpleData(node, item, args) end hasData = hasData or h.printTabbedDataItem(node, item, tabs, args) if hasData then node:addClass('druid-data') end return hasData end function h.getTabbedContent(args, label, item) return args[label .. '_' .. item] or args[item] or TABBED_NONEXIST end function h.printSimpleData(node, item, args) if args[item] and type(args[item]) ~= 'string' then error(("Invalid use of field %s as both a section and a data value"):format(item)) end if not args[item] then return false end node:addClass('druid-data') :addClass('druid-data-' .. h.escape(item)) :addClass('druid-data-nonempty') :wikitext('\n\n' .. args[item]) return true end function h.hasComplexData(item, tabs, args) for _, v in ipairs(tabs) do if args[v .. '_' .. item] then return true end end return false end function h.printSectionHeader(node, section, args) if h.castBool(args[section .. '_nolabel']) then return end local tr = node:tag(h.getTag('row')) :attr('data-druid-section', h.escape(section)) local th = tr:tag(h.getTag('sectionTitle')) :attr('colspan', 2) :addClass('druid-section') :addClass('druid-section-' .. h.escape(section)) if args[section .. '_collapsible'] or args[section .. '_collapsed'] then tr:addClass('druid-collapsible') if args[section .. '_collapsed'] then tr:addClass('druid-collapsible-collapsed') end end local emptySections = {} for _, label in ipairs(args.tabs) do local hasLabel = false for _, item in ipairs(args[section] or {}) do if h.getTabbedContent(args, label, item) then hasLabel = true end end if not hasLabel then emptySections[label] = true end end if not next(emptySections) then th:wikitext(args[section .. '_label'] or section) return end for i, label in ipairs(args.tabs) do local div = th:tag('div') :addClass('druid-toggleable-heading') :addClass('druid-toggleable') :attr('data-druid', h.counter .. '-' .. i) :wikitext(args[section .. '_label'] or section) -- we are going to print the section content even in empty nodes -- for compatibility with browsers without :has, where hiding empty rows won't happen if emptySections[label] then div:addClass('druid-toggleable-heading-empty') end if args[label .. '_focused'] then div:addClass('focused') end end end function h.printSectionTabs(node, section, args) local tabs = args[section .. '_tabs'] if not tabs or #tabs == 0 then return end local tr = node:tag(h.getTag('sectionTabsOuter')) :attr('data-druid-section', h.escape(section)) local th = tr:tag(h.getTag('sectionTabs')) :attr('colspan', 2) :addClass('druid-section-tabs') :addClass('druid-section-tabs-' .. h.escape(section)) local texts = {} for i, item in ipairs(tabs) do texts[i] = args[item .. '_label'] or item end h.printTabs(th, tabs, texts, true, args) end ---------------------------- -- general utility functions ---------------------------- function h.overwrite() -- this is a generic utility function that collects args from the invoke call & the parent template. -- normally, you merge args with parent template overwriting the invoke call, but -- since we'll be putting markup/formatting into our invoke call, -- we actually want to overwrite what the user sent. local f = mw.getCurrentFrame() local origArgs = f.args local parentArgs = f:getParent().args local args = {} for k, v in pairs(parentArgs) do v = mw.text.trim(v) if v ~= '' then args[k] = v end end for k, v in pairs(origArgs) do v = mw.text.trim(tostring(v)) if v ~= '' then args[k] = v end end return args end -- generic utility functions -- these would normally be provided by other modules, but to make installation easy -- I'm including everything here function h.split(text, pattern, plain) if not text then return {} end local ret = {} for m in h.gsplit(text, pattern, plain) do ret[#ret+1] = m end return ret end function h.gsplit( text, pattern, plain ) if not pattern then pattern = ',' end if not plain then pattern = '%s*' .. pattern .. '%s*' end local s, l = 1, text:len() return function () if s then local e, n = text:find( pattern, s, plain ) local ret if not e then ret = text:sub( s ) s = nil elseif n < e then -- Empty separator! ret = text:sub( s, e ) if e < l then s = e + 1 else s = nil end else ret = e > s and text:sub( s, e - 1 ) or '' s = n + 1 end return ret end end, nil, nil end -- char-set of characters to escape/replace local escapePattern = '[' -- required for pattern; do not remove. .. ' ' .. '"' .. "'" .. "%?" .. "%%" .. "%[" .. "%]" .. "{" .. ']' -- required for pattern; do not remove. function h.escape(s) s = s:gsub(escapePattern, '') return s end -- normally I would make these constants at the top of the file -- but I don't want to mistake them with user-set constants h.boolFalse = { ['false'] = true, ['no'] = true, [''] = true, ['0'] = true, ['nil'] = true } function h.castBool(x) if not x then return false end return not h.boolFalse[tostring(x):lower()] end h.htmlEntities = { table = { container = 'table', titleOuter = 'tr', titleInner = 'th', section = '', sectionTitle = 'th', sectionTabsOuter = 'tr', sectionTabs = 'td', row = 'tr', label = 'th', cell = 'td', }, div = { container = 'div', titleOuter = 'div', titleInner = 'div', section = 'div', sectionTitle = 'div', sectionTabsOuter = 'div', sectionTabs = 'div', row = 'div', label = 'div', cell = 'div', } } function h.getTag(key) -- try not to totally fail here return h.htmlEntities[h.entityType or 'div'][key] end return p 1ed7925eef01aea4a3310f76d048da1acb3ec85a Module:Infobox/doc 828 11 19 2025-11-02T00:43:36Z ARTIFICER 564804 Importing default loadout wikitext text/x-wiki {{luadoc}} This module enables the creation of [[support:DRUID infoboxes|DRUID infoboxes]]. 0ce687b29fc5e2d6cad14853a8412fa91910000f Module:Navbox 828 12 20 2025-11-02T00:43:37Z ARTIFICER 564804 Importing default loadout Scribunto text/plain -- version 1.2.5.1 -- config table for RANGER. -- If you want to change the default config, DO NOT change it here, -- please do it via the `onLoadConfig` hook in [[Module:Navbox/Hooks]]. local config = { default_navbox_class = "navigation-not-searchable noexcerpt", -- Base value of the `class` parameter. default_title_class = nil, -- Base value of the `title_class` parameter. default_above_class = nil, -- Base value of the `above_class` parameter. default_below_class = nil, -- Base value of the `below_class` parameter. default_section_class =nil, -- Base value of the `section_class` parameter. default_header_class = nil, -- Base value of the `header_class` parameter. default_group_class = nil, -- Base value of the `group_class` parameter. default_list_class = 'hlist', -- Base value of the `list_class` parameter. default_header_state = nil, -- Base value of the `state` parameter. editlink_hover_message_key = 'Navbox-edit-hover', -- The system message name for hover text of the edit icon. auto_flatten_top_level = true, -- If true, when a section has only one list with no content and no corresponding group but has sublists, these sublists will be moved to top level. -- This helps make the hierarchy of sections and content clearer. -- An example: -- {{navbox -- ... -- |header1 = Items -- | group1.1 = Weapons -- | list1.1 = Swords · Guns · Wands -- | group1.2 = Armors -- | list1.2 = Head pieces · Capes -- |header2 = NPCs -- | group2.1 = Town NPCs -- | list2.1 = Guide · Witch -- ... -- }} -- will be equal to: -- {{navbox -- ... -- |header1 = Items -- | group2 = Weapons -- | list2 = Swords · Guns · Wands -- | group3 = Armors -- | list3 = Head pieces · Capes -- |header5 = NPCs -- | group6 = Town NPCs -- | list6 = Guide · Witch -- ... -- }} custom_render_handle = nil, -- usually for debugging purposes only. if set, it should be a function accept 2 parameters: `dataTree` and `args`, and return a string as module output. } --------------------------------------------------------------------- -- Argument alias. local CANONICAL_NAMES = { ['titlestyle'] = 'title_style', ['listclass'] = 'list_class', ['groupstyle'] = 'group_style', ['collapsible'] = 'state', ['editlink'] = 'meta', ['editlinks'] = 'meta', ['editicon'] = 'meta', ['edit_link'] = 'meta', ['edit_links'] = 'meta', ['edit_icon'] = 'meta', ['navbar'] = 'meta', ['name'] = 'template', ['evenodd'] = 'striped', ['class'] = 'navbox_class', ['css'] = 'navbox_style', ['style'] = 'navbox_style', ['group'] = '1:group', ['list'] = '1:list', } local DEFAULT_ARGS = { ['meta'] = true, } local STATES = { ['no'] = '', ['off'] = '', ['plain'] = '', ['collapsed'] = 'mw-collapsible mw-collapsed', ['expanded'] = 'mw-collapsible', } local BOOL_FALSE = { ['no'] = true, ['off'] = true, ['false'] = true, } local STRIPED = { ['odd'] = 'striped-odd', ['swap'] = 'striped-odd', ['y'] = 'striped-even', ['yes'] = 'striped-even', ['on'] = 'striped-even', ['even'] = 'striped-even', ['striped'] = 'striped-even', } local NAVBOX_CHILD_INDICATOR = '!!C$H$I$L$D!!' local NAVBOX_CHILD_INDICATOR_LENGTH = string.len( NAVBOX_CHILD_INDICATOR ) local CLASS_PREFIX = 'ranger-' --------------------------------------------------------------------- local p = {} local h = {} -- non-public local hooks = mw.title.new('Module:Navbox/Hooks').exists and require('Module:Navbox/Hooks') or {} --------------------------------------------------------------------- -- For templates: {{#invoke:navbox|main|...}} function p.main(frame) local args = p.mergeArgs(frame) return p.build(args, true) end -- For modules: return require('module:navbox').build(args) -- By default this method will skip the arguments sanitizing phase -- (and onSanitizeArgsStart/onSanitizeArgsEnd hooks). -- Set `doParseArgs` to true to do arguments sanitizing. -- If `customConfig` table is provided, it will be merged into default config table (after onLoadConfig()). -- If `customHooks` table is provided, all default hook handles will be overrided, unprovided hooks will be empty. function p.build(args, doParseArgs, customConfig, customHooks) if customHooks then hooks = customHooks end if doParseArgs then args = h.parseArgs(args) end h.runHook('onLoadConfig', config, args) if customConfig then for k,v in pairs(customConfig) do config[k] = v end end --merge default args for k,v in pairs(DEFAULT_ARGS) do if args[k] == nil then args[k] = DEFAULT_ARGS[k] end end h.runHook('onBuildTreeStart', args) local dataTree = h.buildDataTree(args) h.runHook('onBuildTreeEnd', dataTree, args) if type(config.custom_render_handle) == 'function' then return config.custom_render_handle(dataTree, args) else return h.render(dataTree) end end -- merge args from frame and frame:getParent() -- It may be used when creating custom wrapping navbox module. -- -- For example, Module:PillNavbox -- -- local RANGER = require('Module:Navbox') -- local p = {} -- function p.main(frame) -- return RANGER.build(RANGER.mergeArgs(frame), true, { -- default_navbox_class = 'pill', -- use "pill" style by default. -- }) -- end -- return p -- function p.mergeArgs(frame) local inputArgs = {} for k, v in pairs(frame.args) do v = mw.text.trim(tostring(v)) if v ~= '' then inputArgs[k] = v end end for k, v in pairs(frame:getParent().args) do v = mw.text.trim(v) if v ~= '' then inputArgs[k] = v end end return inputArgs end ------------------------------------------------------------------------ -- equivalent to mw.text.split(str, div, true) for non-empty separator, but can be over 60x faster, since the latter is Unicode-aware. -- Original version credit: http://richard.warburton.it. function h.explode(div, str) if (div=='') then return nil end local pos,arr = 0,{} -- for each divider found for st,sp in function() return string.find(str,div,pos,true) end do arr[#arr+1] = string.sub(str,pos,st-1) -- Attach chars left of current divider pos = sp+1 -- Jump past current divider end arr[#arr+1] = string.sub(str,pos) -- Attach chars right of last divider return arr end function h.parseArgs(inputArgs) h.runHook('onSanitizeArgsStart', inputArgs) local args = {} for k, v in pairs(inputArgs) do if type(k) == 'string' then -- all named args have already been trimmed local key = h.normalizeKey(k) args[key] = h.normalizeValue(key, v) else args[k] = mw.text.trim(v) -- keep number-index arguments (for {{navbox|child|...}}) end end h.runHook('onSanitizeArgsEnd', args, inputArgs) return args end -- Normalize the name string of arguments. -- the normalized form is (index:)?name, in which: -- index is number index such as 1, 1.3, 1.2.45, -- name is in lowercase underscore-case, such as group, group_style -- e.g: header_state, 1.3:list_style -- the input argument name can be: -- * camel-case: listStyle, ListStyle -- * space separated: list style -- * prefix+index+postfix?, and can be in camel-case or space/hyphen separated or mixed: list 1 style, list1, list1Style, list1_style -- * index.name: 1.3.list -- * index_name: 1.3_list (Space separated are treated as underscore separated, therefore 1.3 list are vaild too) function h.normalizeKey(s) -- camel-case to lowercase underscore-case s = s:gsub('%l%f[%u]', '%0_') -- listStyle to list_style s = (s:gsub(' ', '_')):lower() -- space to underscore s = s:gsub('%l%f[%d]', '%0_') -- group1* to group_1* s = s:gsub('%d%f[%l]', '%0_') -- *1style to *1_style -- number format x_y_z to x.y.z s = s:gsub('(%d)_%f[%d]', '%1%.') -- move index to the beginning: -- group_1.2_style to 1.2:group_style -- group_1 to 1:group s = s:gsub('^([%l_]+)_([%d%.]+)', '%2:%1') -- support index.name and index_name: -- 1.2.group / 1.2_group to 1.2:group s = s:gsub('^([%d%.]+)[%._]%f[%l]', '%1:') -- now the key should be in normalized form, if the origin key is vaild -- standardize *_css to *_style s = s:gsub('_css$', '_style') -- standardize *collapsible to *state s = s:gsub('collapsible$', 'state') -- standardize all aliases to the canonical name return CANONICAL_NAMES[s] or s end function h.normalizeValue(k, v) k = tostring(k) if k:find('_style$') then v = (v .. ';'):gsub(';;', ';') return v elseif k:find('state$') then return STATES[v] elseif k == 'striped' then return STRIPED[v] elseif k == 'meta' then return not BOOL_FALSE[v] elseif v:sub(1, 2) == '{|' or v:match('^[*:;#]') then -- Applying nowrap to lines in a table does not make sense. -- Add newlines to compensate for trim of x in |parm=x in a template. return '\n' .. v ..'\n' end return v end -- parse arguments, convert them to structured data tree function h.buildDataTree(args) -- parse args to a tree local tree = h.buildTree(args) -- build root navbox data local data = h.buildNavboxData(tree.info) -- Recursively build section tree if tree.children then data.sections = h.buildSections(tree.children, { listClass = h.mergeAttrs(args.list_class, config.default_list_class), listStyle = args.list_style, groupClass = h.mergeAttrs(args.group_class, config.default_group_class), groupStyle = args.group_style, sectionClass = h.mergeAttrs(args.section_class, config.default_section_class), sectionStyle = args.section_style, headerClass = h.mergeAttrs(args.header_class, config.default_header_class), headerStyle = args.header_style, headerState = args.header_state or config.default_header_state, }) end if args[1] == 'child' then data.CHILD_MODE = true end return data end function h.buildSections(list, defaults) local sections = {} local section = nil for k, node in h.orderedPairs(list) do local info = node.info or {} --start a new section if needed if info.header or not section then section = { class = h.mergeAttrs(info.section_class, defaults.sectionClass), style = h.mergeAttrs(info.section_style, defaults.sectionStyle), body = {} } -- Section header if needed. -- If the value of a `|header_n=` is two or more consecutive "-" characters (e.g. --, -----), -- it means start a new section without header, and the new section will be not collapsable. if info.header and not string.match(info.header, '^%-%-+$') then section.header = { content = info.header, class = h.mergeAttrs(info.header_class, defaults.headerClass), style = h.mergeAttrs(info.header_style, defaults.headerStyle), } section.state = info.state or defaults.headerState or 'mw-collapsible' end sections[#sections+1] = section end -- above/below for this section if info.above then section.above = { content = info.above, class= h.mergeAttrs(info.above_class, config.default_above_class), style = info.above_style, } end if info.below then section.below = { content = info.below, class= h.mergeAttrs(info.below_class, config.default_below_class), style = info.below_style, } end -- this group+list row if info.group or info.list or node.children then local row = {} section.body[#section.body+1] = row if info.group then row.group = { content = info.group, class = h.mergeAttrs(info.group_class, defaults.groupClass), style = h.mergeAttrs(info.group_style, defaults.groupStyle), } end if info.list then if string.sub(info.list, 1, NAVBOX_CHILD_INDICATOR_LENGTH) == NAVBOX_CHILD_INDICATOR then -- it is from {{navbox|child| ... }} row.sections = mw.text.jsonDecode(string.sub(info.list, NAVBOX_CHILD_INDICATOR_LENGTH+1)) else row.list = { content = info.list, class = h.mergeAttrs(info.list_class, defaults.listClass), style = h.mergeAttrs(info.list_style, defaults.listStyle), } end end -- sub-nodes, will override {{navbox|child| ... }} if node.children then row.sections = h.buildSections(node.children, defaults) end end end -- flatten if needed: -- If a section has only one list with no content and no corresponding group but has sublists, these sublists will be moved to upper level. if config.auto_flatten_top_level then for _, sect in ipairs(sections) do if #sect.body == 1 then local node = sect.body[1] if not node.group and not node.list and node.sections and #node.sections == 1 and not node.sections[1].header then sect.body = node.sections[1].body end end end end return sections end function h.buildNavboxData(info) local data = { state = info.state or 'mw-collapsible', -- here we need a default value for empty input striped = info.striped, class = h.mergeAttrs(info.navbox_class, config.default_navbox_class), style = info.navbox_style, } -- data for titlebar if info.title or info.meta or data.state ~= '' then data.title = { content = info.title, class = h.mergeAttrs(info.title_class, config.default_title_class), style = info.title_style, } if info.meta then data.metaLinks = { link = info.meta_link, -- will be used as [[$link|$text]] url = info.meta_url, -- will be used as [$url $text], only if there is no data.metaLinks.link text = info.meta_text, --hovertext } if not info.meta_link and not info.meta_url then -- default link target local title = mw.title.new(info.template or mw.getCurrentFrame():getParent():getTitle(), 'Template') if not title then error('Invalid title ' .. info.template) end data.metaLinks.link = title.fullText end if not info.meta_text then local msg = mw.message.new(config.editlink_hover_message_key) data.metaLinks.text = msg:exists() and msg:plain() or 'View or edit this template' end end end -- above/below if info.above then data.above = { content = info.above, class= h.mergeAttrs(info.above_class, config.default_above_class), style = info.above_style, } end if info.below then data.below = { content = info.below, class= h.mergeAttrs(info.below_class, config.default_below_class), style = info.below_style, } end return data end -- parse arguments, convert them into a tree based on their index -- each node on tree is { info = { #data for this node# }, children = {#children nodes#} } function h.buildTree(args, defaults) local tree = { info = {} } local check = function(key, value) local index, name = string.match(key, '^([%d%.]+):(.+)$') -- no number index found, for root node if not index then tree.info[key] = value return end -- filter invalid number index if string.match(index, '^%.') or string.match(index, '%.$') or string.match(index, '%.%.') then return end -- find the node that matches the index in the tree local arr = h.explode('.', index) local node = tree for _, v in ipairs(arr) do v = tonumber(v) if not node.children then node.children = {} end if not node.children[v] then node.children[v] = { info = {} } end node = node.children[v] end node.info[name] = value end for k,v in pairs(args) do check(k, v) end return tree end function h.render(data) -- handle {{navbox|child|...}} syntax if data.CHILD_MODE then return NAVBOX_CHILD_INDICATOR..mw.text.jsonEncode(data.sections) end ----- normal case ----- local out = mw.html.create() -- build navbox container local navbox = out:tag('div') :attr('role', 'navigation'):attr('aria-label', 'Navbox') :addClass(CLASS_PREFIX..'navbox') :addClass(data.class) :addClass(data.striped) :addClass(data.state) :cssText(data.style) --title bar if data.title then local titlebar = navbox:tag('div'):addClass(CLASS_PREFIX..'title') titlebar:tag('div'):addClass('mw-collapsible-toggle-placeholder') if data.metaLinks then titlebar:node(h.renderMetaLinks(data.metaLinks)) end if data.title then titlebar:addClass(data.title.class):tag('div') :addClass(CLASS_PREFIX..'title-text') :addClass(data.title.class) :cssText(data.title.style) :wikitext(data.title.content) end end --above if data.above then navbox:tag('div') :addClass(CLASS_PREFIX..'above mw-collapsible-content') :addClass(data.above.class) :cssText(data.above.style) :wikitext(data.above.content) :attr('id', (not data.title) and mw.uri.anchorEncode(data.above.content) or nil) -- id for aria-labelledby attribute, if no title end -- sections if data.sections then h.renderSections(data.sections, navbox, 0, true) else -- Insert a blank section for completely empty navbox to ensure it behaves correctly when collapsed. if not data.above and not data.below then navbox:tag('div'):addClass(CLASS_PREFIX..'section mw-collapsible-content') end end --below if data.below then navbox:tag('div') :addClass(CLASS_PREFIX..'below mw-collapsible-content') :addClass(data.below.class) :cssText(data.below.style) :wikitext(data.below.content) end return tostring(out)..'[[Category:Pages with navboxes]]' -- suggest to use HIDDENCAT here; will be used for maintenance & gadget imports end function h.renderSections(data, container, level, even) for i,sect in ipairs(data) do --section box local section = container:tag('div') :addClass(CLASS_PREFIX..'section mw-collapsible-content') :addClass(sect.class) :addClass(sect.state) :cssText(sect.style) -- section header if sect.header then section:tag('div') :addClass(CLASS_PREFIX..'header') :addClass(sect.header.class) :cssText(sect.header.style) :tag('div'):addClass('mw-collapsible-toggle-placeholder'):done() :tag('div'):addClass(CLASS_PREFIX..'header-text'):wikitext(sect.header.content) end -- above: if sect.above then section:tag('div') :addClass(CLASS_PREFIX..'above mw-collapsible-content') :addClass(sect.above.class) :cssText(sect.above.style) :wikitext(sect.above.content) end -- body: groups&lists local box = section:tag('div'):addClass(CLASS_PREFIX..'section-body mw-collapsible-content') even = h.renderBody(sect.body, box, level, (level==0) and true or even) -- reset even status each section -- below: if sect.below then section:tag('div') :addClass(CLASS_PREFIX..'below mw-collapsible-content') :addClass(sect.below.class) :cssText(sect.below.style) :wikitext(sect.below.content) end end return even end function h.renderMetaLinks(info) local box = mw.html.create('span'):addClass(CLASS_PREFIX..'meta') local meta = box:tag('span'):addClass('nv nv-view') if info.link then meta:wikitext('[['..info.link..'|') :tag('span'):wikitext(info.text):attr('title', info.text):done() :wikitext(']]') elseif info.url then meta:wikitext('['..info.url..' ') :tag('span'):wikitext(info.text):attr('title', info.text):done() :wikitext(']') end return box end function h.renderBody(info, box, level, even) local count = 0 for _,v in h.orderedPairs(info) do if v.group or v.list or v.sections then count = count + 1 -- row container local row = box:tag('div'):addClass(CLASS_PREFIX..'row') -- group cell if v.group or (v.sections and level > 0 and not v.list) then local groupCell = row:tag('div') :addClass(CLASS_PREFIX..'group level-'..level) :addClass((level > 0) and CLASS_PREFIX..'subgroup' or nil) local groupContentWrap = groupCell:tag('div'):addClass(CLASS_PREFIX..'wrap') if v.group then groupCell:addClass(v.group.class):cssText(v.group.style) groupContentWrap:wikitext(v.group.content) else groupCell:addClass('empty') row:addClass('empty-group-list') end else row:addClass('empty-group') end -- list cell local listCell = row:tag('div'):addClass(CLASS_PREFIX..'listbox') if not v.list and not v.sections then listCell:addClass('empty') row:addClass('empty-list') end if v.list or (v.group and not v.sections) then --listCell:node(h.renderList(v['list'] or '', k, level, args)) even = not even -- flip even/odd status local cell = listCell:tag('div') :addClass(CLASS_PREFIX..'wrap') :addClass(even and CLASS_PREFIX..'even' or CLASS_PREFIX..'odd') if v.list then cell:addClass(v.list.class):cssText(v.list.style) :tag('div'):addClass(CLASS_PREFIX..'list'):wikitext(v.list.content) end end if v.sections then local sublistBox = listCell:tag('div'):addClass(CLASS_PREFIX..'sublist level-'..level) even = h.renderSections(v.sections, sublistBox, level+1, even) end end end if count > 0 then box:css('--count', count) -- for flex-grow end return even end -- pairs, but sort the keys alphabetically function h.orderedPairs(t, f) local a = {} for n in pairs(t) do table.insert(a, n) end table.sort(a, f) local i = 0 -- iterator variable local iter = function () -- iterator function i = i + 1 if a[i] == nil then return nil else return a[i], t[a[i]] end end return iter end -- For cascading parameters, such as style or class, they are merged in exact order (from general to specific). -- Any parameter starting with multiple hyphens(minus signs) will terminate the cascade. -- An example: -- For group_1.1, its style is affected by parameters |group_1.1_style=... , |subgroup_level_1_style=... , and |subgroup_style=... . -- If we have |group_1.1_style= color:red; |subgroup_level_1_style= font-weight: bold; and |subgroup_style= color: green; , -- the style of group_1.1 will be style="color:green; font-weight: bold; color: red;" ; -- if we have |group_1.1_style= -- color:red; |subgroup_level_1_style= font-weight: bold; and |subgroup_style= color: green; , -- the style of group_1.1 will be style="color: red;" only, and the cascade is no longer performed for |subgroup_level_1_style and |subgroup_style. function h.mergeAttrs(...) local trim = mw.text.trim local s = '' for i=1, select('#', ...) do local v = trim(select(i, ...) or '') local str = string.match(v, '^%-%-+(.*)$') if str then s = trim(str..' '..s) break else s = trim(v..' '..s) end end if s == '' then s = nil end return s end function h.runHook(key, ...) if hooks[key] then hooks[key](...) end end ----------------------------------------------- return p a79480d191a5de8b03e6884580f407d4a2195e62 Module:ArgsUtil 828 13 21 2025-11-02T00:43:37Z ARTIFICER 564804 Importing default loadout Scribunto text/plain local p = {} function p.merge() local f = mw.getCurrentFrame() local origArgs = f.args local parentArgs = f:getParent().args local args = {} for k, v in pairs(origArgs) do v = mw.text.trim(tostring(v)) if v ~= '' then args[k] = v end end for k, v in pairs(parentArgs) do v = mw.text.trim(v) if v ~= '' then args[k] = v end end return args end return p 1d1b2105bd857dcc5e33c8c0a8a780f67cbae72e Module:ArgsUtil/doc 828 14 22 2025-11-02T00:43:37Z ARTIFICER 564804 Importing default loadout wikitext text/x-wiki This is a basic module for processing args. Usage: <syntaxhighlight lang="lua"> local util_args = require('Module:ArgsUtil') local p = {} function p.main(frame) local args = util_args.merge() -- it is not necessary to pass a `frame` object; `merge` will generate its own mw.logObject(args) -- `args` now contains args passed via the template merged with defaults provided directly via the invoke. -- anything the user sent via the template will be given priority. end return p </syntaxhighlight> == Extending this module == By design, {{ml|ArgsUtil}} is shipped with only a single function and no customization available; this simplifies documentation and covers nearly all use cases. An extended version of this module is available at [[support:Module:ArgsUtil|Module:ArgsUtil on the support wiki]] if you want additional functionality; and you can of course feel free to modify this module on your own wiki as needed. 6fc2a23dcff62ac5a222903e46bc56c07b0a2b1f Module:Template link 828 15 23 2025-11-02T00:43:38Z ARTIFICER 564804 Importing default loadout Scribunto text/plain -- This code is adapted from Wikipedia -- For the original, please see: https://en.wikipedia.org/wiki/Module:Template_link_general -- This implements Template:Tlg local getArgs = require('Module:ArgsUtil').merge local p = {} -- Is a string non-empty? local function _ne(s) return s ~= nil and s ~= "" end local nw = mw.text.nowiki local function addTemplate(s) local i, _ = s:find(':', 1, true) if i == nil then return 'Template:' .. s end local ns = s:sub(1, i - 1) if ns == '' or mw.site.namespaces[ns] then return s else return 'Template:' .. s end end local function trimTemplate(s) local needle = 'template:' if s:sub(1, needle:len()):lower() == needle then return s:sub(needle:len() + 1) else return s end end local function linkTitle(args) if _ne(args.nolink) then return args[1] end local titleObj local titlePart = '[[' if args[1] then -- This handles :Page and other NS titleObj = mw.title.new(args[1], 'Template') else titleObj = mw.title.getCurrentTitle() end titlePart = titlePart .. (titleObj ~= nil and titleObj.fullText or addTemplate(args[1])) local textPart = args.alttext if not _ne(textPart) then if titleObj ~= nil then textPart = titleObj:inNamespace("Template") and args[1] or titleObj.fullText else -- redlink textPart = args[1] end end if _ne(args.subst) then -- HACK: the ns thing above is probably broken textPart = 'subst:' .. textPart end if _ne(args.brace) then textPart = nw('{{') .. textPart .. nw('}}') elseif _ne(args.braceinside) then textPart = nw('{') .. textPart .. nw('}') end titlePart = titlePart .. '|' .. textPart .. ']]' if _ne(args.braceinside) then titlePart = nw('{') .. titlePart .. nw('}') end return titlePart end function p.main(frame) local args = getArgs() return p._main(args) end function p._main(args) local bold = _ne(args.bold) or _ne(args.boldlink) or _ne(args.boldname) local italic = _ne(args.italic) or _ne(args.italics) local dontBrace = _ne(args.brace) or _ne(args.braceinside) local code = _ne(args.code) or _ne(args.tt) local show_result = _ne(args._show_result) local expand = _ne(args._expand) -- Build the link part local titlePart = linkTitle(args) if bold then titlePart = "'''" .. titlePart .. "'''" end if _ne(args.nowrapname) then titlePart = '<span class="nowrap">' .. titlePart .. '</span>' end -- Build the arguments local textPart = "" local textPartBuffer = "&#124;" local codeArguments = {} local codeArgumentsString = "" local i = 2 local j = 1 while args[i] do local val = args[i] if val ~= "" then if _ne(args.nowiki) then -- Unstrip nowiki tags first because calling nw on something that already contains nowiki tags will -- mangle the nowiki strip marker and result in literal UNIQ...QINU showing up val = nw(mw.text.unstripNoWiki(val)) end local k, v = string.match(val, "(.*)=(.*)") if not k then codeArguments[j] = val j = j + 1 else codeArguments[k] = v end codeArgumentsString = codeArgumentsString .. textPartBuffer .. val if italic then val = '<span style="font-style:italic;">' .. val .. '</span>' end textPart = textPart .. textPartBuffer .. val end i = i + 1 end -- final wrap local ret = titlePart .. textPart if not dontBrace then ret = nw('{{') .. ret .. nw('}}') end if _ne(args.a) then ret = nw('*') .. '&nbsp;' .. ret end if _ne(args.kbd) then ret = '<kbd>' .. ret .. '</kbd>' end if code then ret = '<code>' .. ret .. '</code>' elseif _ne(args.plaincode) then ret = '<code style="border:none;background:transparent;">' .. ret .. '</code>' end if _ne(args.nowrap) then ret = '<span class="nowrap">' .. ret .. '</span>' end --[[ Wrap as html?? local span = mw.html.create('span') span:wikitext(ret) --]] if _ne(args.debug) then ret = ret .. '\n<pre>' .. mw.text.encode(mw.dumpObject(args)) .. '</pre>' end if show_result then local result = mw.getCurrentFrame():expandTemplate{title = addTemplate(args[1]), args = codeArguments} ret = ret .. " → " .. result end if expand then local query = mw.text.encode('{{' .. addTemplate(args[1]) .. string.gsub(codeArgumentsString, textPartBuffer, "|") .. '}}') local url = mw.uri.fullUrl('special:ExpandTemplates', 'wpInput=' .. query) mw.log() ret = ret .. " [" .. tostring(url) .. "]" end return ret end return p 45d40a4bff9a1d0eb4274f56fb2f17849aa68728 Module:Template link/doc 828 16 24 2025-11-02T00:43:38Z ARTIFICER 564804 Importing default loadout wikitext text/x-wiki {{From Wikipedia|Module:Template link general}} 1a395265ccbd055518c1d14b52362cc148b89c81 Module:Main page 828 17 25 2025-11-02T00:43:38Z ARTIFICER 564804 Importing default loadout Scribunto text/plain local p = {} local h = {} -- merge args from frame and frame:getParent() function h.mergeArgs(frame) local inputArgs = {} for k, v in pairs(frame.args) do v = mw.text.trim(tostring(v)) if v ~= '' then inputArgs[k] = v end end for k, v in pairs(frame:getParent().args) do v = mw.text.trim(v) if v ~= '' then inputArgs[k] = v end end return inputArgs end -------------------------------------------------------------------- function p.main(frame) local args = h.mergeArgs(frame) -- use the rootpage parameter if given, otherwise use the current page name local rootpage = args['rootpage'] or mw.title.getCurrentTitle().fullText local layouts = {'desktop', 'tablet', 'mobile'} for _,layout in pairs(layouts) do -- collapse consecutive line breaks and spaces, then trim -- we need to check for permutations of " \n" because trim can't clean that up if it's in the middle of the string args[layout] = mw.text.trim(args[layout]):gsub("\n\n+", "\n"):gsub(" +", " "):gsub(" \n", "\n"):gsub("\n ", "\n") -- check if columns are consistent in this layout local warn = false local last_column_count = 0 local current_column_count = 0 for _,row in pairs(mw.text.split(mw.text.trim(args[layout]), '\n')) do current_column_count = #mw.text.split(row, '%s') --count elements in this row if last_column_count == 0 then last_column_count = current_column_count elseif last_column_count ~= current_column_count then warn = true end end if warn then mw.addWarning( 'ERROR: the ' .. layout .. ' layout does not have a consistent number of columns in each row. This will result in all the boxes merging into one.') end end -- parse the arguments into CSS variables that contain legal syntax for grid-template-areas local desktop_var = "--main-page-layout--desktop: '" .. string.gsub(args['desktop'], '\n', "' '") .. "';" local tablet_var = "--main-page-layout--tablet: '" .. string.gsub(args['tablet' ], '\n', "' '") .. "';" local mobile_var = "--main-page-layout--mobile: '" .. string.gsub(args['mobile' ], '\n', "' '") .. "';" -- grid-template-columns overrides local desktop_cols = mw.text.trim(string.gsub(args['desktop-columns'] or '', ';', '')) local tablet_cols = mw.text.trim(string.gsub(args[ 'tablet-columns'] or '', ';', '')) local mobile_cols = mw.text.trim(string.gsub(args[ 'mobile-columns'] or '', ';', '')) -- set the variables used by grid-template-columns if desktop_cols ~= '' then desktop_var = desktop_var .. '--main-page-layout-columns--desktop: '.. desktop_cols ..';' end if tablet_cols ~= '' then tablet_var = tablet_var .. '--main-page-layout-columns--tablet: '.. tablet_cols ..';' end if mobile_cols ~= '' then mobile_var = mobile_var .. '--main-page-layout-columns--mobile: '.. mobile_cols ..';' end local boxes = {} -- list of all boxes as a simple list, used to set the order of appearance local seen_boxes = {} -- list of all boxes as a k:v pair, used to filter out duplicates local boxes_in_layout = {} -- list of layouts, then list of all boxes in that layout local missing_boxes = {} -- list of layouts, then list of boxes that are *not* included in that layout -- add every box referenced in the layout rules once function parse_layout(layout) for _,name in pairs(mw.text.split(mw.text.trim(args[layout]), '%s')) do if not seen_boxes[name] then boxes[#boxes+1] = name -- table with numerical keys for set html order seen_boxes[name] = true end boxes_in_layout[layout][name] = true end end -- loop through the layouts the first time to set up the box lists for _,layout in pairs(layouts) do boxes_in_layout[layout] = {} missing_boxes[layout] = {} parse_layout(layout) end -- then loop through the layouts a second time because we need to compare those completed lists to check for missing boxes for _,layout in pairs(layouts) do for _,name in pairs(boxes) do if boxes_in_layout[layout][name] ~= true then mw.addWarning( 'WARNING: the \"' .. name .. '\" box is missing in the ' .. layout .. ' layout. If this is intentional, you can ignore this warning.') missing_boxes[layout][name] = true end end end -- start our mp-container wrapper, and add our variables from earlier as inline styles to declare them -- the rootpage is added to the dataset so it's easily accessible by mp-edit-links.js and it doesn't need to make its own API call local output = mw.html.create() local container = output:tag('div'):attr('id', 'mp-container'):cssText(desktop_var .. tablet_var .. mobile_var):attr('data-rootpage', rootpage) -- loop through boxes and add the relevant main page subpages into the output for _,box in pairs(boxes) do mw.ext.VariablesLua.vardefine('imp-variable-id', box) -- using a vardefine lets us pass this directly to the template without going through the user-facing box local pre_vardefine = '' for _,layout in pairs(layouts) do pre_vardefine = pre_vardefine .. (missing_boxes[layout][box] and '0' or '1') .. ',' end -- formatted as a psuedo-bitmask to reduce variable usage, "<display-on-destop>, <display-on-tablet>, <display-on-mobile>," each value is 0 or 1 (trailing comma is insignificant) -- expected to be used with #explode in the template receiving the variable mw.ext.VariablesLua.vardefine('imp-variable-display-box', pre_vardefine) if mw.title.new(rootpage .. '/' .. box).exists then container:wikitext(frame:expandTemplate{ title = ':' .. rootpage .. '/' .. box}) else container:wikitext(frame:expandTemplate{ title = 'Main page box/missing', args = { box, rootpage = rootpage}}) -- See [[Template:Main page box/missing]] end end return output end return p 50f10670c4a97ec14d749325645a6bf800f10e59 Module:Navbox/Hooks 828 18 26 2025-11-02T00:43:39Z ARTIFICER 564804 Importing default loadout Scribunto text/plain -- as of Module:Navbox version 1.2.5 local p = {} --------------------------------------------------- -- Runs before RANGER does args sanitizing -- `inputArgs` is the merged input arguments from the template (frame.args + frame:getParent().args) function p.onSanitizeArgsStart(inputArgs) end -- Runs after RANGER does args sanitizing -- `args` parameter is the sanitized arguments table with normalized keys (in lowercase underscore-case with canonical names) and normalized values. function p.onSanitizeArgsEnd(args, inputArgs) end -- Runs when RANGER loads config table (after onSanitizeArgsEnd and before onBuildTreeStart) -- `config` parameter is the default config table. -- `args` parameter is the sanitized arguments table (has not yet merged the DEFAUT_ARGS table). function p.onLoadConfig(config, args) end -- Runs before RANGER converts sanitized arguments table to structured data tree -- `args` parameter is the sanitized arguments table that has the DEFAUT_ARGS merged. function p.onBuildTreeStart(args) end -- Runs after RANGER converts sanitized arguments table to structured data tree -- `tree` parameter is the structured data. -- `args` parameter is the sanitized arguments table. function p.onBuildTreeEnd(tree, args) end --------------------------------------------------- return p a124a9f396b4a5a6c91de416c6cb8af5342f41fb Module:Navbox/doc 828 19 27 2025-11-02T00:43:39Z ARTIFICER 564804 Importing default loadout wikitext text/x-wiki This module is used by [[Template:Navbox]]. 87d5c562165cd75b963e03aa428c80413bacff30 Template:Documentation 10 20 28 2025-11-02T00:43:40Z ARTIFICER 564804 Importing default loadout wikitext text/x-wiki <includeonly><!-- --><div class="documentation"><!-- --><div class="documentation-header"><!-- -->[[File:Template-{{#ifexist:{{#vardefineecho:docpage|{{{1|Template:{{#replace:{{{1|{{PAGENAME}}/doc}}}|Template:|}}}}}<!-- end vde -->}}|{{#if:{{{baddoc|}}}|bad}}|no}}info.svg|50px|link=]] <!-- --><span style="font-weight: bold; font-size: 125%; margin-right: 10px;">Documentation</span> <!-- -->{{#ifeq:{{SUBPAGENAME}}|doc|<!--nothing-->|<!-- -->{{#ifexist:{{#var:docpage}}|<!-- --><span style="font-size: 90%; font-style: italic;"><!-- -->[{{fullurl:{{#var:docpage}}|action=edit}} Edit] this documentation at [{{fullurl:{{#var:docpage}}|redirect=no}} {{FULLPAGENAMEE:{{#var:docpage}}}}].<!-- --></span><!-- -->}}<!-- -->}}<!-- --><div style="text-align: right; margin-left: 5px;"><!-- -->([{{fullurl:{{#var:docpage}}|action=edit}} edit] • [{{fullurl:{{#var:docpage}}|action=history}} history] • [{{fullurl:{{FULLPAGENAMEE}}|action=purge}} purge])<!-- --></div><!-- --></div><!-- <!-- leave line break here --> {{#if:{{{lua|}}}|{{UsesLua|{{{lua}}} }} }} <!-- documentation text/error box begins here --> <div style="border-radius: 5px; border: 2px solid var(--wiki-content-border-color); margin: 0.5em auto 1em; padding: 0.8em 1.2em; background: var(--wiki-content-background-color--secondary);"> <!-- -->{{#ifexist:{{#var:docpage}}|<!-- If there is documentation --> {{ {{#var:docpage}} }} <!-- Else -->|<!-- -->No documentation subpage exists yet for this template. [{{fullurl:{{FULLPAGENAMEE:Template:<!-- -->{{#if:{{{1|}}}|{{#replace:{{{1|}}}|Template:|}}|{{PAGENAME}}/doc<!-- /if -->}}<!-- /FULLPAGENAME--> }}|action=edit&preload=Template:Documentation/preload}} Create one now].<!-- -->[[Category:Templates with no documentation]]<!-- -->}}<!-- leave line break here --> <!-- documentation text/error box ends here --> </div> <!-- -->{{#ifeq:{{SUBPAGENAME}}|doc|<!-- -->{{#ifeq:{{BASEPAGENAME}}|Doc|<!--nothing-->|<!-- only if page is not Template:Documentation -->This is the documentation page, it should be transcluded into the main template page. See {{tlx|doc}} for more information. <!-- -->[[Category:Template documentation]]<!-- -->}}<!-- -->}}<!-- --></div><!-- --></includeonly><!-- --><noinclude>{{Documentation}} [[Category:Documentation templates| ]] </noinclude> 6eb6bc81f8d9773ecfa3c223359b1c78472fde05 Template:Luadoc 10 21 29 2025-11-02T00:43:40Z ARTIFICER 564804 Importing default loadout wikitext text/x-wiki <noinclude>[[Category:Documentation templates]]</noinclude>{{#ifeq:{{int:scribunto-doc-page-name|{{ROOTPAGENAME}}}}|{{FULLPAGENAME}}||<div class="luadoc">Edit the [[{{int:scribunto-doc-page-name|{{ROOTPAGENAME}}}}|documentation or categories]] for this module. {{#ifexist:{{FULLPAGENAME}}/i18n|This module has an [[/i18n|i18n file]].}}</div>}} 37de49949dfa0f16975ff4e9850b4573ec388cb6 Template:MP link 10 22 30 2025-11-02T00:43:40Z ARTIFICER 564804 Importing default loadout wikitext text/x-wiki <includeonly><!-- Variables -->{{#vardefine:link|{{{link|{{{1|}}}}}}}}{{#ifeq:{{#pos:{{#var:link}}|:}}|0|{{#vardefine:link|{{#sub:{{#var:link}}|1}}}}}}<!-- Image-->{{#if:{{{image|}}}|[[File:{{#replace:{{{image|}}}|File:}}|{{{size|42px}}}|link={{#var:link}}{{#if:{{{altText|}}}|{{!}}alt={{{altText|}}}}}|class={{{imageClass|}}}]]}}<!-- Link below the image -->{{#if:{{{1|}}}|<!-- If it's an external link, use external link syntax -->{{#if:{{#pos:{{{link|}}}|http}}|[{{{link|}}} {{{1|}}}]|<!-- Otherwise use normal syntax the ifeq, pos, sub combo is filtering out a leading :, so that we can add our own without doubling up, allowing easy category linking -->[[:{{#var:link}}|{{{1|}}}]]}} }}</includeonly><noinclude> {{doc}} [[Category:Main page templates]] </noinclude> 13a2f6c745624b13ca85f7e3fbb939769acba979 Template:MP link/doc 10 23 31 2025-11-02T00:43:41Z ARTIFICER 564804 Importing default loadout wikitext text/x-wiki This creates one of the stylized and formatted links on the [[{{MediaWiki:Mainpage}}|main page]]. == Usage == Groups of this template should be wrapped inside of <code><nowiki><div class="mp-links"></div></nowiki></code> and each entry should be a separate line in an [[wikipedia:Help:Lists#Basically|unordered list]]. This div can be given one of the classes <code>columns-x</code> where x is a number from 1 to 8, and the links will line up in that many columns if space permits (default is 3). The div can also optionally be given the class <code>stretch</code> and it will stretch the list vertically to fill empty space. See [[Mediawiki:Common.css]] for the full definitions of these classes and styling for this template. ===Parameters=== <templatedata> { "description": { "en": "Creates stylized and formatted links on the main page." }, "format": "inline", "params": { "1": { "label": { "en": "Text" }, "description": { "en": "The text to display. If the link parameter is not given, this will also be the link target." }, "example": "Stuff", "type": "string", "suggested": true }, "link": { "label": { "en": "Link" }, "description": { "en": "The target page for the link, if different than the display text." }, "required": false, "example": "Main Page", "type": "wiki-page-name" }, "image": { "label": { "en": "Image" }, "description": { "en": "An image to display with the link." }, "required": false, "suggested": true, "type": "wiki-file-name" }, "size": { "label": { "en": "Image size" }, "description": { "en": "The size of the image, in px." }, "required": false, "default": "42px", "type": "string" }, "imageClass": { "label": "Image class", "description": "A class to give directly to the image", "example": "invert-on-dark", "type": "string", "suggestedvalues": [ "invert-on-dark", "invert-on-light" ] }, "altText": { "label": "Alt text", "description": "Alt text to describe the image", "example": "Wiki logo", "type": "string", "suggested": true } }, "paramOrder": [ "1", "link", "image", "size", "imageClass", "altText" ] } </templatedata> ==Examples== <pre> <div class="mp-links columns-3"> * {{MP link|Stuff|link=Special:Random|image=Site-logo.png|size=42px}} * {{MP link|Things|link=Special:Random}} * {{MP link|Other stuff|link=Special:Random|image=Site-logo.png|size=42px}} </div> </pre> Produces: <div class="mp-links columns-3"> * {{MP link|Stuff|link=Special:Random|image=Site-logo.png|size=42px}} * {{MP link|Things|link=Special:Random}} * {{MP link|Other stuff|link=Special:Random|image=Site-logo.png|size=42px}} </div> <noinclude> [[Category:Template documentation]] </noinclude> 0df5d36904353428acb21882bd8923560f77a142 Template:Doc 10 24 32 2025-11-02T00:43:41Z ARTIFICER 564804 Importing default loadout wikitext text/x-wiki #redirect [[Template:Documentation]] 041222999c2c4765a4663432058f50686fb65f40 Template:Uses Lua 10 25 33 2025-11-02T00:43:41Z ARTIFICER 564804 Importing default loadout wikitext text/x-wiki <includeonly>{{Ambox | color = darkblue | icon = Lua logo.svg | title= This template uses one or more modules written in the Lua programming language. | message = For more information, see [[wikipedia:Wikipedia:Lua|Wikipedia:Lua]] or the [[mw:Extension:Scribunto/Lua reference manual|Lua reference manual on mediawiki.org]]. Modules used include: {{#if:{{{1|}}}|{{#arraymap:{{{1|}}}|,|%s|'''[[Module:%s|%s]]'''}}|''None provided''}}. | tiny = {{{tiny|}}} | class = {{{class|}}} }}</includeonly><noinclude>{{doc|Template:Ambox/doc}}</noinclude> 1930c9b36136a5562cfaf7584f811d62b114a58a Template:Ambox 10 26 34 2025-11-02T00:43:42Z ARTIFICER 564804 Importing default loadout wikitext text/x-wiki <includeonly><!-- --><div class="ambox {{{class|}}} {{#ifeq:{{lc:{{{tiny|}}}}}|yes|tiny}} noexcerpt"<!-- --> style="{{#if:{{{color|}}}|--ambox-color: {{{color|}}};<!-- /if -->}}"><!-- --><div class="ambox-icon metadata <!-- the metadata class stops it from showing in MediaViewer -->">[[File:{{{icon|Ambox banner content.svg}}}{{!}}{{#ifeq:{{lc:{{{tiny|}}}}}|yes|48x20px|48x48px}}|alt=|link=]]</div><!-- --><div class="ambox-content"><!-- start ambox content -->{{#if: {{{title|}}} | <p class="ambox-title">{{{title}}}</p> }}<!-- --><p class="ambox-text">{{{message|No text provided.}}}{{#if: {{{date|}}} |<nowiki> </nowiki>(Message added: {{{date}}}) }}</p><!-- --></div><!-- end ambox content --></div><!-- end ambox --></includeonly><noinclude> {{doc}} [[Category:Notice templates]]</noinclude> 11c1d0a1c9c2fcd4b89b27313303decfae03dea7 Template:(( 10 27 35 2025-11-02T00:43:42Z ARTIFICER 564804 Importing default loadout wikitext text/x-wiki {{<noinclude>{{documentation}}</noinclude> a506ba66cf7c806baae7faecb221b3a946721f6a Template:Tlx 10 28 36 2025-11-02T00:43:42Z ARTIFICER 564804 Importing default loadout wikitext text/x-wiki #redirect [[Template:Tl]] af3906f239c45d791753d3170c656eddd6d1af5f Template:Tl 10 29 37 2025-11-02T00:43:43Z ARTIFICER 564804 Importing default loadout wikitext text/x-wiki <includeonly>{{#invoke:Template link|main|code=on}}</includeonly><noinclude> {{Documentation}} </noinclude> 1c13b1daaf7b7e8ce1e45cc03b4baf31c09bc6cd Template:Tl/doc 10 30 38 2025-11-02T00:43:43Z ARTIFICER 564804 Importing default loadout wikitext text/x-wiki {{From Wikipedia|Module:Template link general,Template:Tlx}} {{Uses Lua|Template link}} This template returns an exemplaric use of a template while linking to the template description page, if the template exists. == Usage == <pre> {{tl|<Template name>}} {{tl|<Template name>|<Template parameters>}} </pre> ; ''unnamed parameter'' 1 : Template name (without <code>Template:</code> prefix) ; ''unnamed parameter'' 2 - 9 : Optional. Template parameters ; nl : Optional flag to display an un-linked template usage. == Examples == : <code><nowiki>{{tl|stub}}</nowiki></code> returns {{tl|stub}} : <code><nowiki>{{tl|stub|1}}</nowiki></code> returns {{tl|stub|1}} : <code><nowiki>{{tl|stub|1|2|nl{{=}}y}}</nowiki></code> returns {{tl|stub|1|2|nl{{=}}y}} : <code><nowiki>{{tl|for|page|t1{{=}}alt text}}</nowiki></code> returns {{tl|for|page|t1{{=}}alt text}} == See also == <includeonly> [[Category:Formatting templates]] </includeonly><noinclude>[[Category:Template documentation]]</noinclude> 7cb4f0fa749ef8a18a48c4b5816357a225f4acee Template:Nowrap 10 31 39 2025-11-02T00:43:43Z ARTIFICER 564804 Importing default loadout wikitext text/x-wiki <span class="nowrap">{{{1}}}</span><noinclude> {{documentation}} </noinclude> 8817bafce418a08a72f3425283fc03d04a2d8d44 Template:)) 10 32 40 2025-11-02T00:43:44Z ARTIFICER 564804 Importing default loadout wikitext text/x-wiki }}<noinclude> {{documentation}} </noinclude> 85ca77d4d6ff71d8e6396ebd798f87fa7f45dc02 Template:))/doc 10 33 41 2025-11-02T00:43:44Z ARTIFICER 564804 Importing default loadout wikitext text/x-wiki #redirect [[Template:((/doc]] 509bb731d447456a18489848c8a1ce38feddabcc Template:No wrap 10 34 42 2025-11-02T00:43:44Z ARTIFICER 564804 Importing default loadout wikitext text/x-wiki #redirect [[Template:Nowrap]] 269180d5083536bbbf72d889477805cfde7aac9e Template:Normal 10 35 43 2025-11-02T00:43:44Z ARTIFICER 564804 Importing default loadout wikitext text/x-wiki <span style{{=}}"font-weight:normal; font-style:normal">{{{1}}}</span><noinclude> {{documentation}} </noinclude> f1d74e033cde1ce3b2efdc98b78fb863b8524fcf Template:((/doc 10 36 44 2025-11-02T00:43:45Z ARTIFICER 564804 Importing default loadout wikitext text/x-wiki {| class="wikitable" style="text-align:center" |- ! scope="col" style="width:7.0em;" | {{no wrap|Template call}}<br>{{normal|('''m''' for magic word)}} ! scope="col" style="width:5.75em;" | {{no wrap|Output}}&nbsp;{{normal|(delayed interpretation as wikimarkup)}} ! scope="col" style="width:9.0em;" | {{no wrap|HTML alternative}} {{normal|(never interpreted as wikimarkup)}} ! Why you might want to use this |- style="vertical-align:top" | <code><nowiki>{{!}}</nowiki></code> '''(m)''' | <nowiki>|</nowiki> | &amp;#124; or {{tl|pipe}} | Displaying pipe characters inside of a parser function |- style="vertical-align:top" | <code><nowiki>{{=}}</nowiki></code> '''(m)''' | <nowiki>=</nowiki> | &amp;#61; | Displaying equal signs inside of unnamed parameters (e.g. <code><nowiki>{{MyTemplate|1+1=2}}</nowiki></code> will assign <code>2</code> to <code><nowiki>{{{1+1|}}}</nowiki></code>; <code><nowiki>{{MyTemplate|1+1{{=}}2}}</nowiki></code> will do what you want) |- style="vertical-align:top" | {{tlx|!!}} | <nowiki>||</nowiki> | &amp;#124;&amp;#124; | Displaying a break between two table cells inside of a parser function |- style="vertical-align:top" | {{tlx|!(}} | {{!(}} | &amp;#91; | Displaying a bracket inside of an external link |- style="vertical-align:top" | {{tlx|)!}} | {{)!}} | &amp;#93; | Displaying a bracket inside of an external link |- style="vertical-align:top" | {{tlx|!((}} | {{!((}} | &amp;#91;&amp;#91; | Displaying a bracket inside of a link |- style="vertical-align:top" | {{tlx|))!}} | {{))!}} | &amp;#93;&amp;#93; | Displaying a bracket inside of a link |- style="vertical-align:top" | {{tlx|(}} | {{(}} | &amp;#123; | Escaping a single brace immediately next to a template or parser function to avoid turning it into a parameter |- style="vertical-align:top" | {{tlx|)}} | {{)}} | &amp;#125; | Escaping a single brace immediately next to a template or parser function to avoid turning it into a parameter |- style="vertical-align:top" | {{tlx|((}} | {{((}} | &amp;#123;&amp;#123; | Displaying open braces for a template without actually transcluding that template |- style="vertical-align:top" | {{tlx|))}} | {{))}} | &amp;#125;&amp;#125; | Displaying closed braces for a template without actually transcluding that template |- style="vertical-align:top" | {{tlx|(((}} | {{(((}} | &amp;#123;&amp;#123;&amp;#123; | Displaying a template parameter's open curly braces without actually using that variable |- style="vertical-align:top" | {{tlx|)))}} | {{)))}} | &amp;#125;&amp;#125;&amp;#125; | Displaying a template parameter's closed curly braces without actually using that variable |- style="vertical-align:top" | {{tlx|(!}} | <nowiki>{|</nowiki> | &amp;#123;&amp;#124; | Starting a table inside of a parser function |- style="vertical-align:top" | {{tlx|!-}} | <nowiki>|-</nowiki> | &amp;#124;&amp;#45; | Starting a new table row inside of a parser function |- style="vertical-align:top" | {{tlx|!)}} | <nowiki>|}</nowiki> | &amp;#124;&amp;#125; | Closing a table inside of a parser function |}<includeonly> [[Category:Escaped character templates]] </includeonly><noinclude>[[Category:Template documentation]]</noinclude> f898d14f10d43565cd2cfefce33e573d22d20ad4 Template:!( 10 37 45 2025-11-02T00:43:45Z ARTIFICER 564804 Importing default loadout wikitext text/x-wiki [<noinclude> {{documentation}}</noinclude> 1b058774deae9a7e511a0486a04647d6a3b9af62 Template:!(/doc 10 38 46 2025-11-02T00:43:45Z ARTIFICER 564804 Importing default loadout wikitext text/x-wiki #redirect [[Template:((/doc]] 509bb731d447456a18489848c8a1ce38feddabcc Template:)! 10 39 47 2025-11-02T00:43:46Z ARTIFICER 564804 Importing default loadout wikitext text/x-wiki ]<noinclude> {{documentation}}</noinclude> 016897dfd1af3b146bed2b47e7aa58c0bbf6f23d Template:)!/doc 10 40 48 2025-11-02T00:43:46Z ARTIFICER 564804 Importing default loadout wikitext text/x-wiki #redirect [[Template:((/doc]] 509bb731d447456a18489848c8a1ce38feddabcc Template:!(( 10 41 49 2025-11-02T00:43:46Z ARTIFICER 564804 Importing default loadout wikitext text/x-wiki [[<noinclude> {{documentation}}</noinclude> a331374acf15177afbb3ffc0ec7bd5ada14c582e Template:!((/doc 10 42 50 2025-11-02T00:43:46Z ARTIFICER 564804 Importing default loadout wikitext text/x-wiki #redirect [[Template:((/doc]] 509bb731d447456a18489848c8a1ce38feddabcc Template:))! 10 43 51 2025-11-02T00:43:47Z ARTIFICER 564804 Importing default loadout wikitext text/x-wiki ]]<noinclude> {{documentation}}</noinclude> 3d84066ce45d0c1fca0bb04608a4e73c6ea54324 Template:))!/doc 10 44 52 2025-11-02T00:43:47Z ARTIFICER 564804 Importing default loadout wikitext text/x-wiki #redirect [[Template:((/doc]] 509bb731d447456a18489848c8a1ce38feddabcc Template:Navbox 10 45 53 2025-11-02T00:43:47Z ARTIFICER 564804 Importing default loadout wikitext text/x-wiki <includeonly>{{#invoke:Navbox|main}}</includeonly><noinclude>[[Category:Navigation templates]] {{documentation}}</noinclude> 11355a4514de8aa6c0ae686240591d267101c58c Template:Navbox/doc 10 46 54 2025-11-02T00:43:47Z ARTIFICER 564804 Importing default loadout wikitext text/x-wiki {{no direct use}} {{UsesLua|Navbox}} This template is designed to set up navigational templates relatively quickly with one or more lists of links. We highly recommend using this template for standardizing navigational templates and ease of use, especially for mobile devices. See [[support:RANGER navboxes|the support wiki]] for more information, including installation steps and further examples. == Basic example == The following example demonstrates the core functionality of this template: the title text, one standard link group, and one link group that contains two sub-groups. The rows are striped for easier readability. {{Navbox | title = Items | striped = even | group1 = Consumables | list1 = * Health Potion * Mana Potion | group2 = Weapons | group2.1 = Swords | list2.1 = * Wooden Sword * Rusted Sword * Steel Sword | group2.2 = Bows | list2.2 = * Shortbow * Crossbow * Longbow }} <syntaxhighlight lang="wikitext" style="overflow: auto;"> {{Navbox | template = <template_title> <!-- Required. e.g. `|template=Items` for template:Items --> | title = Items | striped = even | group1 = Consumables | list1 = * Health Potion * Mana Potion | group2 = Weapons | group2.1 = Swords | list2.1 = * Wooden Sword * Rusted Sword * Steel Sword | group2.2 = Bows | list2.2 = * Shortbow * Crossbow * Longbow }} </syntaxhighlight> == Parameters == === Main === The following parameters modify the navbox as a whole. {| class="wikitable" ! Parameter ! Description |- ! <code>template</code><br><code>name</code> | ('''Required''') Title of the template that the edit icon links to. e.g. <code>Items</code> for template:Items. |- ! <code>title</code> | Text that appears at the top of the navbox. |- ! <code>state</code><br><code>collapsible</code> | Controls if a navbox should be expanded or collapsed when the page loads. This only affects the whole navbox; if [[#Sections|sections]] are used, they are treated differently. * <code>expanded</code> ('''default''') - the navbox will start open and readers can collapse it. * <code>collapsed</code> - the navbox will start closed and readers can expand it. * <code>off</code>, <code>no</code>, or <code>plain</code> - the navbox will start open and cannot be collapsed. Advanced users can modify this on a page-by-page basis; see [[support:RANGER navboxes#Controlling the collapsible|the support wiki]] for more information. |- ! <code>editlinks</code> | Controls if an edit icon should be displayed at the top-left of the navbox, making it easier for users to interact with the template itself. * unset ('''default''') - displays the edit icon * <code>off</code> or <code>no</code> - hides the edit icon |- ! <code>above</code> | Text that appears above all list groups, directly below the title. |- ! <code>below</code> | Text that appears below all list groups, at the bottom of the navbox. |- ! <code>striped</code><br><code>evenodd</code> | Controls if the navbox rows should have zebra striping on even or odd rows, making it easier for users to distinguish two rows apart from each other. If [[#Sections|sections]] are used, each section resets the even/odd counter. *unset ('''default''') - all rows have the same background *<code>y</code>, <code>yes</code>, <code>on</code>, <code>striped</code>, or <code>even</code> - even-numbered rows are highlighted *<code>swap</code> or <code>odd</code> - odd-numbered rows are highlighted |} === Sections === The following parameters define sections within the navbox with their own titles. {| class="wikitable" ! Parameter ! Description |- ! <code>header''n''</code> | Text that appears at the top of the section, where ''n'' is any positive integer. If the value is set to two or more <code>-</code> (e.g. <code>--</code>, <code>-----</code>, etc.) the new section will have no header bar and cannot be collapsed. All groups and lists that are ''n'' or higher will appear in this section unless there is a higher <code>header''n''</code> later in the template. For example, if a navbox defines <code>header1</code> and <code>header4</code>, the first section will include <code>list1</code>, <code>list2</code>, and <code>list3</code> (and any of their sub-lists), while the second section will include all remaining lists starting at <code>list4</code> and their sub-lists. |- ! <code>header_state</code><br><code>state''n''</code> | <code>header_state</code> controls if all sections, by default, should be expanded or collapsed when the page loads. <code>state''n''</code> overrides <code>header_state</code> for the specific section defined by <code>header''n''</code> (where ''n'' is a matching integer). * <code>expanded</code> ('''default''') - the section will start open and readers can collapse it. * <code>collapsed</code> - the section will start closed and readers can expand it. * <code>off</code> or <code>plain</code> - the section will start open and cannot be collapsed. Advanced users can modify these on a page-by-page basis; see [[support:RANGER navboxes#Controlling the collapsible|the support wiki]] for more information. Both parameters have no effect on sections with headers set to two or more <code>-</code>, which are always expanded and cannot be collapsed. |} === List groups === The following parameters define the list groups. {| class="wikitable" ! Parameter ! Description |- ! <code>group''n''</code> | Text label for a list, which appears on the left on desktop or at the top on mobile, where ''n'' is any positive integer. This parameter is optional; if a <code>list''n''</code> does not have a matching <code>group''n''</code>, the list will take the full width on desktop. |- ! <code>list''n''</code> | A wikitext list, where ''n'' is any positive integer. |- ! <code>group''n''.''x''</code><br><code>group''n''.''x''.''y''</code><br>etc. | Text label for sub-lists that appear under <code>group''n''</code>, <code>group''n''.''x''</code>, etc. |- ! <code>list''n''.''x''</code><br><code>list''n''.''x''.''y''</code><br>etc. | Wikitext sub-lists. |} === Styling === The following parameters add inline styling or your custom CSS classes to specific elements of the navbox. To assist with text alignment, three default classes are available: <code>align-left</code>, <code>align-center</code>, and <code>align-right</code>. {| class="wikitable" ! Parameter ! Description |- ! <code>navbox_style</code><br><code>navbox_class</code> | Modifies the parent navbox element; <code>class</code> can be used as a shorthand for <code>navbox_class</code> Two default classes are available: *<code>pill</code> changes the links to pill-styled rather than dot-separated *<code>pill-mobile</code> only changes the links to pill-styled on mobile devices |- ! <code>title_style</code><br><code>title_class</code> | Modifies the title bar |- ! <code>above_style</code><br><code>above_class</code> | Modifies the <code>above</code> text row |- ! <code>below_style</code><br><code>below_class</code> | Modifies the <code>below</code> text row |- ! <code>header_style</code><br><code>header_class</code> | Modifies all section headers (''not'' the title bar) |- ! <code>header''n''_style</code><br><code>header''n''_class</code> | Modifies the specific section header ''n'' |- ! <code>section''n''_style</code><br><code>section''n''_class</code> | Modifies the container holding the section defined by a matching <code>header''n''</code> |- ! <code>group_style</code><br><code>group_class</code> | Modifies all base groups (<code>group''n''</code>), but ''not'' any subgroups (<code>group''n''.''x''</code>, etc.) |- ! <code>subgroup_style</code><br><code>subgroup_class</code> | Modifies all subgroups at all levels (<code>group''n''.''x''</code>, <code>group''n''.''x''.''y''</code>, etc.) |- ! <code>group''A''_style</code><br><code>group''A''_class</code> | Modifies the specific group ''A'', where ''A'' is any ''n'', ''n''.''x'', ''n''.''x''.''y'', etc. |- ! <code>list_style</code><br><code>list_class</code> | Modifies all lists. Note, in this context, "list" refers to the container of a <code>list''n''</code> parameter, not a <code>ul</code> or <code>ol</code> element inside the parameter |- ! <code>list''A''_style</code><br><code>list''A''_class</code> | Modifies the specific list ''A'', where ''A'' is any ''n'', ''n''.''x'', ''n''.''x''.''y'', etc. |} <noinclude>[[Category:Template documentation]]</noinclude> e35c990efd00644e63b9735d72ff65818357a1fb Template:( 10 47 55 2025-11-02T00:43:48Z ARTIFICER 564804 Importing default loadout wikitext text/x-wiki {<noinclude> {{documentation}}</noinclude> 490a0c9c85eff213addd7272fe40f8627a637c75 Template:(/doc 10 48 56 2025-11-02T00:43:48Z ARTIFICER 564804 Importing default loadout wikitext text/x-wiki #redirect [[Template:((/doc]] 509bb731d447456a18489848c8a1ce38feddabcc Template:) 10 49 57 2025-11-02T00:43:48Z ARTIFICER 564804 Importing default loadout wikitext text/x-wiki }<noinclude> {{documentation}}</noinclude> 3bf19eb36f7371f1b4b61b8efbba67dfb0e8cfd4 Template:)/doc 10 50 58 2025-11-02T00:43:48Z ARTIFICER 564804 Importing default loadout wikitext text/x-wiki #redirect [[Template:((/doc]] 509bb731d447456a18489848c8a1ce38feddabcc Template:((( 10 51 59 2025-11-02T00:43:49Z ARTIFICER 564804 Importing default loadout wikitext text/x-wiki {{{<noinclude> {{documentation}}</noinclude> fa33084b57c1f33c82290de279827b973ab2fba8 Template:(((/doc 10 52 60 2025-11-02T00:43:49Z ARTIFICER 564804 Importing default loadout wikitext text/x-wiki #redirect [[Template:((/doc]] 509bb731d447456a18489848c8a1ce38feddabcc Template:))) 10 53 61 2025-11-02T00:43:49Z ARTIFICER 564804 Importing default loadout wikitext text/x-wiki }}}<noinclude> {{documentation}}</noinclude> 585d94f6fe636b77087dc0d06bfbe6cb69b29987 Template:)))/doc 10 54 62 2025-11-02T00:43:49Z ARTIFICER 564804 Importing default loadout wikitext text/x-wiki #redirect [[Template:((/doc]] 509bb731d447456a18489848c8a1ce38feddabcc Template:Documentation/doc 10 55 63 2025-11-02T00:43:49Z ARTIFICER 564804 Importing default loadout wikitext text/x-wiki Use {{tl|documentation}} inside of the <code><nowiki><noinclude></noinclude></nowiki></code> section on your template. Then create your template at the <code>/doc</code> subpage of your template. <noinclude>[[Category:Template documentation]]</noinclude> 055b0481a1967951c59f15a09b92767c90baa8dd Template:License/CC-BY-NC-ND 10 56 64 2025-11-02T00:43:50Z ARTIFICER 564804 Importing default loadout wikitext text/x-wiki <includeonly>{{License/template | source = {{{source|}}} | type = CC-BY-NC-ND | icon = [[File:CC-BY-NC-ND.svg|x50px|link=https://creativecommons.org/licenses/by-nc-nd/3.0/|CC-BY-NC-ND]] | text = This file is under the [https://creativecommons.org/licenses/by-nc-nd/3.0/ Creative Commons Attribution-NonCommercial-NoDerivs 3.0 License]. }}</includeonly><noinclude> This template currently looks like: {{License/CC-BY-NC-ND}} See {{tl|License}} for full license documentation [[Category:License templates]]</noinclude> 4ed8a6372d14a167dd9d26f1ae865b1593b76604 65 64 2025-11-02T00:43:50Z ARTIFICER 564804 Protected "[[Template:License/CC-BY-NC-ND]]" ([Edit=Allow only administrators] (indefinite) [Rename=Allow only administrators] (indefinite)) wikitext text/x-wiki <includeonly>{{License/template | source = {{{source|}}} | type = CC-BY-NC-ND | icon = [[File:CC-BY-NC-ND.svg|x50px|link=https://creativecommons.org/licenses/by-nc-nd/3.0/|CC-BY-NC-ND]] | text = This file is under the [https://creativecommons.org/licenses/by-nc-nd/3.0/ Creative Commons Attribution-NonCommercial-NoDerivs 3.0 License]. }}</includeonly><noinclude> This template currently looks like: {{License/CC-BY-NC-ND}} See {{tl|License}} for full license documentation [[Category:License templates]]</noinclude> 4ed8a6372d14a167dd9d26f1ae865b1593b76604 Template:License/CC-BY-SA 10 57 66 2025-11-02T00:43:50Z ARTIFICER 564804 Importing default loadout wikitext text/x-wiki <includeonly>{{License/template | source = {{{source|}}} | type = CC-BY-SA | icon = [[File:CC-BY-SA.svg|x50px|link=https://creativecommons.org/licenses/by-sa/3.0/|CC-BY-SA]] | text = This file is under the [https://creativecommons.org/licenses/by-sa/3.0/ Creative Commons Attribution-ShareAlike 3.0 License]. }}</includeonly><noinclude> This template currently looks like: {{License/CC-BY-SA}} See {{tl|License}} for full license documentation [[Category:License templates]]</noinclude> 1e471ba76ef084e99bff87e9356d439d400f73de 67 66 2025-11-02T00:43:50Z ARTIFICER 564804 Protected "[[Template:License/CC-BY-SA]]" ([Edit=Allow only administrators] (indefinite) [Rename=Allow only administrators] (indefinite)) wikitext text/x-wiki <includeonly>{{License/template | source = {{{source|}}} | type = CC-BY-SA | icon = [[File:CC-BY-SA.svg|x50px|link=https://creativecommons.org/licenses/by-sa/3.0/|CC-BY-SA]] | text = This file is under the [https://creativecommons.org/licenses/by-sa/3.0/ Creative Commons Attribution-ShareAlike 3.0 License]. }}</includeonly><noinclude> This template currently looks like: {{License/CC-BY-SA}} See {{tl|License}} for full license documentation [[Category:License templates]]</noinclude> 1e471ba76ef084e99bff87e9356d439d400f73de Template:License/fairuse 10 58 68 2025-11-02T00:43:50Z ARTIFICER 564804 Importing default loadout wikitext text/x-wiki <includeonly>{{License/template | source = {{{source|}}} | type = fairuse | darkIcon = yes | icon = [[File:IN COPYRIGHT.svg|50px|link=https://rightsstatements.org/page/InC/1.0/?language=en|IN COPYRIGHT]] | text = This file is copyrighted. It will be used in a way that qualifies as fair use under [https://en.wikipedia.org/wiki/Fair_use#Fair_use_under_United_States_law US copyright law]. }}</includeonly><noinclude> This template currently looks like: {{License/fairuse}} See {{tl|License}} for full license documentation [[Category:License templates]]</noinclude> 3662b685c4d9fa43d4f9342fae34b2f43ba925ef 69 68 2025-11-02T00:43:51Z ARTIFICER 564804 Protected "[[Template:License/fairuse]]" ([Edit=Allow only administrators] (indefinite) [Rename=Allow only administrators] (indefinite)) wikitext text/x-wiki <includeonly>{{License/template | source = {{{source|}}} | type = fairuse | darkIcon = yes | icon = [[File:IN COPYRIGHT.svg|50px|link=https://rightsstatements.org/page/InC/1.0/?language=en|IN COPYRIGHT]] | text = This file is copyrighted. It will be used in a way that qualifies as fair use under [https://en.wikipedia.org/wiki/Fair_use#Fair_use_under_United_States_law US copyright law]. }}</includeonly><noinclude> This template currently looks like: {{License/fairuse}} See {{tl|License}} for full license documentation [[Category:License templates]]</noinclude> 3662b685c4d9fa43d4f9342fae34b2f43ba925ef Template:License 10 59 70 2025-11-02T00:43:51Z ARTIFICER 564804 Importing default loadout wikitext text/x-wiki <includeonly>{{License/{{{1|nolicense}}}|source={{{source|}}}}}</includeonly><noinclude>{{documentation}}</noinclude> 4b84fc940507f8fccb9c60b7f70b5a800a62fe59 71 70 2025-11-02T00:43:51Z ARTIFICER 564804 Protected "[[Template:License]]" ([Edit=Allow only administrators] (indefinite) [Rename=Allow only administrators] (indefinite)) wikitext text/x-wiki <includeonly>{{License/{{{1|nolicense}}}|source={{{source|}}}}}</includeonly><noinclude>{{documentation}}</noinclude> 4b84fc940507f8fccb9c60b7f70b5a800a62fe59 Template:License/CC-PD 10 60 72 2025-11-02T00:43:51Z ARTIFICER 564804 Importing default loadout wikitext text/x-wiki <includeonly>{{License/template | source = {{{source|}}} | type = CC-PD | icon = [[File:CC-PD.svg|x50px|link=|Public Domain]] | text = This file has been released into the public domain by the copyright holder, its copyright has expired, or it is ineligible for copyright. This applies worldwide. }}</includeonly><noinclude> This template currently looks like: {{License/CC-PD}} See {{tl|License}} for full license documentation [[Category:License templates]]</noinclude> 23b76ae521833f5a34f0bf73426a53aad8fa9923 73 72 2025-11-02T00:43:51Z ARTIFICER 564804 Protected "[[Template:License/CC-PD]]" ([Edit=Allow only administrators] (indefinite) [Rename=Allow only administrators] (indefinite)) wikitext text/x-wiki <includeonly>{{License/template | source = {{{source|}}} | type = CC-PD | icon = [[File:CC-PD.svg|x50px|link=|Public Domain]] | text = This file has been released into the public domain by the copyright holder, its copyright has expired, or it is ineligible for copyright. This applies worldwide. }}</includeonly><noinclude> This template currently looks like: {{License/CC-PD}} See {{tl|License}} for full license documentation [[Category:License templates]]</noinclude> 23b76ae521833f5a34f0bf73426a53aad8fa9923 Template:License/CC-SRR 10 61 74 2025-11-02T00:43:52Z ARTIFICER 564804 Importing default loadout wikitext text/x-wiki <includeonly>{{License/template | source = {{{source|}}} | type = CC-SRR | icon = [[File:CC-SRR.svg|link=|CC-Some Rights Reserved]] | text = This file is under the Creative Commons Some Rights Reserved License. }}</includeonly><noinclude> This template currently looks like: {{License/CC-SRR}} See {{tl|License}} for full license documentation [[Category:License templates]]</noinclude> 1ce36d04e501144e6a089ff194fee2b82732e85a 75 74 2025-11-02T00:43:52Z ARTIFICER 564804 Protected "[[Template:License/CC-SRR]]" ([Edit=Allow only administrators] (indefinite) [Rename=Allow only administrators] (indefinite)) wikitext text/x-wiki <includeonly>{{License/template | source = {{{source|}}} | type = CC-SRR | icon = [[File:CC-SRR.svg|link=|CC-Some Rights Reserved]] | text = This file is under the Creative Commons Some Rights Reserved License. }}</includeonly><noinclude> This template currently looks like: {{License/CC-SRR}} See {{tl|License}} for full license documentation [[Category:License templates]]</noinclude> 1ce36d04e501144e6a089ff194fee2b82732e85a Template:License/CC-BY 10 62 76 2025-11-02T00:43:52Z ARTIFICER 564804 Importing default loadout wikitext text/x-wiki <includeonly>{{License/template | source = {{{source|}}} | type = CC-BY | icon = [[File:CC-BY.svg|x50px|link=https://creativecommons.org/licenses/by/3.0/|CC-BY]] | text = This file is under the [https://creativecommons.org/licenses/by/3.0/ Creative Commons Attribution 3.0 License]. }}</includeonly><noinclude> This template currently looks like: {{License/CC-BY}} See {{tl|License}} for full license documentation [[Category:License templates]]</noinclude> 49f4317b802ef04c92f4edc474581035768c252e 77 76 2025-11-02T00:43:52Z ARTIFICER 564804 Protected "[[Template:License/CC-BY]]" ([Edit=Allow only administrators] (indefinite) [Rename=Allow only administrators] (indefinite)) wikitext text/x-wiki <includeonly>{{License/template | source = {{{source|}}} | type = CC-BY | icon = [[File:CC-BY.svg|x50px|link=https://creativecommons.org/licenses/by/3.0/|CC-BY]] | text = This file is under the [https://creativecommons.org/licenses/by/3.0/ Creative Commons Attribution 3.0 License]. }}</includeonly><noinclude> This template currently looks like: {{License/CC-BY}} See {{tl|License}} for full license documentation [[Category:License templates]]</noinclude> 49f4317b802ef04c92f4edc474581035768c252e Template:License/CC-BY-ND 10 63 78 2025-11-02T00:43:52Z ARTIFICER 564804 Importing default loadout wikitext text/x-wiki <includeonly>{{License/template | source = {{{source|}}} | type = CC-BY-ND | icon = [[File:CC-BY-ND.svg|x50px|link=https://creativecommons.org/licenses/by-nd/3.0/|CC-BY-ND]] | text = This file is under the [https://creativecommons.org/licenses/by-nd/3.0/ Creative Commons Attribution-NoDerivs 3.0 License]. }}</includeonly><noinclude> This template currently looks like: {{License/CC-BY-ND}} See {{tl|License}} for full license documentation [[Category:License templates]]</noinclude> c77af748cb3aab2fce9bfd947149cb3e1ef0a3f0 79 78 2025-11-02T00:43:52Z ARTIFICER 564804 Protected "[[Template:License/CC-BY-ND]]" ([Edit=Allow only administrators] (indefinite) [Rename=Allow only administrators] (indefinite)) wikitext text/x-wiki <includeonly>{{License/template | source = {{{source|}}} | type = CC-BY-ND | icon = [[File:CC-BY-ND.svg|x50px|link=https://creativecommons.org/licenses/by-nd/3.0/|CC-BY-ND]] | text = This file is under the [https://creativecommons.org/licenses/by-nd/3.0/ Creative Commons Attribution-NoDerivs 3.0 License]. }}</includeonly><noinclude> This template currently looks like: {{License/CC-BY-ND}} See {{tl|License}} for full license documentation [[Category:License templates]]</noinclude> c77af748cb3aab2fce9bfd947149cb3e1ef0a3f0 Template:License/game 10 64 80 2025-11-02T00:43:53Z ARTIFICER 564804 Importing default loadout wikitext text/x-wiki <includeonly><!-- -->{{#vardefine:rightsholder|<!-- *************************************** *************************************** Step 1/2 [required] Enter the name of the rightsholder, optionally with a link. Example without link: indie.io Example with a URL: [https://www.indie.io/ indie.io] Edit on the line below this************--> <!--Edit on the line above this******** *************************************** *************************************** -->}}<!-- continue to step 2 *************************************** *************************************** Step 2/2 [optional] Enter the TOS link. Example link: https://www.indie.io/terms-of-service -->{{#vardefine:tos|<!-- Edit on the line below this************--> <!--Edit on the line above this******** *************************************** *************************************** -->}}<!-- DON'T EDIT ANYTHING BELOW THIS -->{{License/template | source = {{{source|}}} | type = developer | darkIcon = yes | icon = [[File:IN COPYRIGHT.svg|50px|link=https://rightsstatements.org/page/InC/1.0/?language=en|IN COPYRIGHT]] | text = {{#if:{{#var:rightsholder}}| <!-- Specific: -->This file is owned by {{#var:rightsholder}} and/or its licensors{{#if:{{#var:tos}}|, and is licensed under the {{#var:rightsholder}} [{{#var:tos}} Terms of Use]}}.<br/>All trademarks and registered trademarks present in the file are proprietary to {{#var:rightsholder}} and/or its licensors. | <!-- Generic: -->This file is owned by the applicable game studio and/or its licensors. }} }}</includeonly><noinclude> This template currently looks like: {{License/game}} See {{tl|License}} for full license documentation [[Category:License templates]]</noinclude> f1283ce43eda0d523b8e1f249ebc02470d957b34 81 80 2025-11-02T00:43:53Z ARTIFICER 564804 Protected "[[Template:License/game]]" ([Edit=Allow only administrators] (indefinite) [Rename=Allow only administrators] (indefinite)) wikitext text/x-wiki <includeonly><!-- -->{{#vardefine:rightsholder|<!-- *************************************** *************************************** Step 1/2 [required] Enter the name of the rightsholder, optionally with a link. Example without link: indie.io Example with a URL: [https://www.indie.io/ indie.io] Edit on the line below this************--> <!--Edit on the line above this******** *************************************** *************************************** -->}}<!-- continue to step 2 *************************************** *************************************** Step 2/2 [optional] Enter the TOS link. Example link: https://www.indie.io/terms-of-service -->{{#vardefine:tos|<!-- Edit on the line below this************--> <!--Edit on the line above this******** *************************************** *************************************** -->}}<!-- DON'T EDIT ANYTHING BELOW THIS -->{{License/template | source = {{{source|}}} | type = developer | darkIcon = yes | icon = [[File:IN COPYRIGHT.svg|50px|link=https://rightsstatements.org/page/InC/1.0/?language=en|IN COPYRIGHT]] | text = {{#if:{{#var:rightsholder}}| <!-- Specific: -->This file is owned by {{#var:rightsholder}} and/or its licensors{{#if:{{#var:tos}}|, and is licensed under the {{#var:rightsholder}} [{{#var:tos}} Terms of Use]}}.<br/>All trademarks and registered trademarks present in the file are proprietary to {{#var:rightsholder}} and/or its licensors. | <!-- Generic: -->This file is owned by the applicable game studio and/or its licensors. }} }}</includeonly><noinclude> This template currently looks like: {{License/game}} See {{tl|License}} for full license documentation [[Category:License templates]]</noinclude> f1283ce43eda0d523b8e1f249ebc02470d957b34 Template:License/nolicense 10 65 82 2025-11-02T00:43:53Z ARTIFICER 564804 Importing default loadout wikitext text/x-wiki <includeonly>{{License/template | source = {{{source|}}} | type = nolicense | icon = [[File:Warning-red.svg|50px|link=|No license has been selected.]] | text = Please select the proper license for this file by adding the proper parameter to <nowiki>{{License}}</nowiki>. See [[Template:License]] for details. }}</includeonly><noinclude> This template currently looks like: {{License/nolicense}} See {{tl|License}} for full license documentation [[Category:License templates]]</noinclude> 9ddcfb97af577d7f8454e20f985b9456e7a95c77 83 82 2025-11-02T00:43:53Z ARTIFICER 564804 Protected "[[Template:License/nolicense]]" ([Edit=Allow only administrators] (indefinite) [Rename=Allow only administrators] (indefinite)) wikitext text/x-wiki <includeonly>{{License/template | source = {{{source|}}} | type = nolicense | icon = [[File:Warning-red.svg|50px|link=|No license has been selected.]] | text = Please select the proper license for this file by adding the proper parameter to <nowiki>{{License}}</nowiki>. See [[Template:License]] for details. }}</includeonly><noinclude> This template currently looks like: {{License/nolicense}} See {{tl|License}} for full license documentation [[Category:License templates]]</noinclude> 9ddcfb97af577d7f8454e20f985b9456e7a95c77 Template:License/CC-BY-NC 10 66 84 2025-11-02T00:43:53Z ARTIFICER 564804 Importing default loadout wikitext text/x-wiki <includeonly>{{License/template | source = {{{source|}}} | type = CC-BY-NC | icon = [[File:CC-BY-NC.svg|x50px|link=https://creativecommons.org/licenses/by-nc/3.0/|CC-BY-NC]] | text = This file is under the [https://creativecommons.org/licenses/by-nc/3.0/ Creative Commons Attribution-NonCommercial 3.0 License]. }}</includeonly><noinclude> This template currently looks like: {{License/CC-BY-NC}} See {{tl|License}} for full license documentation [[Category:License templates]]</noinclude> 535d8d725e53a0e8f94922ed597baed1353cec21 85 84 2025-11-02T00:43:54Z ARTIFICER 564804 Protected "[[Template:License/CC-BY-NC]]" ([Edit=Allow only administrators] (indefinite) [Rename=Allow only administrators] (indefinite)) wikitext text/x-wiki <includeonly>{{License/template | source = {{{source|}}} | type = CC-BY-NC | icon = [[File:CC-BY-NC.svg|x50px|link=https://creativecommons.org/licenses/by-nc/3.0/|CC-BY-NC]] | text = This file is under the [https://creativecommons.org/licenses/by-nc/3.0/ Creative Commons Attribution-NonCommercial 3.0 License]. }}</includeonly><noinclude> This template currently looks like: {{License/CC-BY-NC}} See {{tl|License}} for full license documentation [[Category:License templates]]</noinclude> 535d8d725e53a0e8f94922ed597baed1353cec21 Template:License/CC-BY-NC-SA 10 67 86 2025-11-02T00:43:54Z ARTIFICER 564804 Importing default loadout wikitext text/x-wiki <includeonly>{{License/template | source = {{{source|}}} | type = CC-BY-NC-SA | icon = [[File:CC-BY-NC-SA.svg|x50px|link=https://creativecommons.org/licenses/by-nc-sa/3.0/|CC-BY-NC-SA]] | text = This file is under the [https://creativecommons.org/licenses/by-nc-sa/3.0/ Creative Commons Attribution-NonCommercial-ShareAlike 3.0 License]. }}</includeonly><noinclude> This template currently looks like: {{License/CC-BY-NC-SA}} See {{tl|License}} for full license documentation [[Category:License templates]]</noinclude> 385fc8e61d98dd5ed6d4fa25b0eacf17cbca1218 87 86 2025-11-02T00:43:54Z ARTIFICER 564804 Protected "[[Template:License/CC-BY-NC-SA]]" ([Edit=Allow only administrators] (indefinite) [Rename=Allow only administrators] (indefinite)) wikitext text/x-wiki <includeonly>{{License/template | source = {{{source|}}} | type = CC-BY-NC-SA | icon = [[File:CC-BY-NC-SA.svg|x50px|link=https://creativecommons.org/licenses/by-nc-sa/3.0/|CC-BY-NC-SA]] | text = This file is under the [https://creativecommons.org/licenses/by-nc-sa/3.0/ Creative Commons Attribution-NonCommercial-ShareAlike 3.0 License]. }}</includeonly><noinclude> This template currently looks like: {{License/CC-BY-NC-SA}} See {{tl|License}} for full license documentation [[Category:License templates]]</noinclude> 385fc8e61d98dd5ed6d4fa25b0eacf17cbca1218 Template:License/CC0 10 68 88 2025-11-02T00:43:54Z ARTIFICER 564804 Importing default loadout wikitext text/x-wiki <includeonly>{{License/template | source = {{{source|}}} | type = CC0 | icon = [[File:CC-0.svg|x50px|link=https://creativecommons.org/publicdomain/zero/1.0/|CC0]] | text = This file is under the [https://creativecommons.org/publicdomain/zero/1.0/ CC0 1.0 License]. }}</includeonly><noinclude> This template currently looks like: {{License/CC0}} See {{tl|License}} for full license documentation [[Category:License templates]]</noinclude> a6ae218b1382bcbe6f0e6e98ef272e4355dd7205 89 88 2025-11-02T00:43:54Z ARTIFICER 564804 Protected "[[Template:License/CC0]]" ([Edit=Allow only administrators] (indefinite) [Rename=Allow only administrators] (indefinite)) wikitext text/x-wiki <includeonly>{{License/template | source = {{{source|}}} | type = CC0 | icon = [[File:CC-0.svg|x50px|link=https://creativecommons.org/publicdomain/zero/1.0/|CC0]] | text = This file is under the [https://creativecommons.org/publicdomain/zero/1.0/ CC0 1.0 License]. }}</includeonly><noinclude> This template currently looks like: {{License/CC0}} See {{tl|License}} for full license documentation [[Category:License templates]]</noinclude> a6ae218b1382bcbe6f0e6e98ef272e4355dd7205 Template:License/doc 10 69 90 2025-11-02T00:43:54Z ARTIFICER 564804 Importing default loadout wikitext text/x-wiki This template is to be used under a ''Licensing'' heading on file pages to denote the file's license. == Available licenses == === Game === * Usage: <nowiki>{{License|game}}</nowiki> {{License|game}} === Fairuse === * Usage: <nowiki>{{License|fairuse}}</nowiki> {{License|fairuse}} === CC0 === * Usage: <nowiki>{{License|CC0}}</nowiki> {{License|CC0}} === CC-BY-NC-ND === * Usage: <nowiki>{{License|CC-BY-NC-ND}}</nowiki> {{License|CC-BY-NC-ND}} === CC-BY-NC-SA === * Usage: <nowiki>{{License|CC-BY-NC-SA}}</nowiki> {{License|CC-BY-NC-SA}} === CC-BY-NC === * Usage: <nowiki>{{License|CC-BY-NC}}</nowiki> {{License|CC-BY-NC}} === CC-BY-ND === * Usage: <nowiki>{{License|CC-BY-ND}}</nowiki> {{License|CC-BY-ND}} === CC-BY-SA === * Usage: <nowiki>{{License|CC-BY-SA}}</nowiki> {{License|CC-BY-SA}} === CC-BY === * Usage: <nowiki>{{License|CC-BY}}</nowiki> {{License|CC-BY}} === CC-PD === * Usage: <nowiki>{{License|CC-PD}}</nowiki> {{License|CC-PD}} === CC-SRR === * Usage: <nowiki>{{License|CC-SRR}}</nowiki> {{License|CC-SRR}} === Permission === * Usage: <nowiki>{{License|permission}}</nowiki> {{License|permission}} === No license === '''Providing no parameter (or invalid one) defaults to the nolicense notice:''' <nowiki>{{License}}</nowiki>{{License}} == Specifying source == '''Source parameter (optional):''' The source parameter accepts a url to the source where the file came from if necessary for attribution. Example: <nowiki>{{License|game|source=https://indie.io/}}</nowiki> {{License|game|source=https://indie.io/}} <includeonly> [[Category:License templates]] </includeonly> <noinclude>[[Category:Template documentation]]</noinclude> 5b334ee591fa6a0867f5d8e685e580b5b6c21334 Template:License/Fairuse 10 70 91 2025-11-02T00:43:55Z ARTIFICER 564804 Importing default loadout wikitext text/x-wiki #redirect [[Template:License/fairuse]] ecb7db41961bb5256d571593ca3f90ae1e199a3e Template:Clear 10 71 92 2025-11-02T00:43:55Z ARTIFICER 564804 Importing default loadout wikitext text/x-wiki <div style="clear:{{{1|both}}};" class={{{class|}}}></div><noinclude> {{documentation}} </noinclude> 5b24b9fd5cc166a8c486e2422d5df465206ed39c Template:Ml 10 72 93 2025-11-02T00:43:55Z ARTIFICER 564804 Importing default loadout wikitext text/x-wiki <code>{{[[Module:{{{1}}}|{{{1}}}]]}}<sup>m</sup>{{#if:{{{2|}}}|.{{{2}}}()}}</code><noinclude> * <code><nowiki>{{Ml|Infobox}}</nowiki></code> generates {{Ml|Infobox}}. * <code><nowiki>{{Ml|ArgsUtil|merge}}</nowiki></code> generates {{Ml|ArgsUtil|merge}}. [[Category:Formatting templates]] </noinclude> 0c69bf8d7c3319f1cf2aa68f4b80261257291560 Template:(! 10 73 94 2025-11-02T00:43:55Z ARTIFICER 564804 Importing default loadout wikitext text/x-wiki <includeonly>{|</includeonly><noinclude>{{documentation}}</noinclude> 74ba0a1ff1b77cf5303bb4141456601530bb12dd Template:!- 10 74 95 2025-11-02T00:43:56Z ARTIFICER 564804 Importing default loadout wikitext text/x-wiki |-<noinclude>{{documentation}}</noinclude> 636f9e440c24f4a3fe28b49cebd1808c3de8a814 Template:!) 10 75 96 2025-11-02T00:43:56Z ARTIFICER 564804 Importing default loadout wikitext text/x-wiki |}<noinclude>{{documentation}}</noinclude> b2debea163716e114d1ea46e65a63d7a1ae84bc0 Template:(!/doc 10 76 97 2025-11-02T00:43:56Z ARTIFICER 564804 Importing default loadout wikitext text/x-wiki #redirect [[Template:((/doc]] 509bb731d447456a18489848c8a1ce38feddabcc Template:!-/doc 10 77 98 2025-11-02T00:43:57Z ARTIFICER 564804 Importing default loadout wikitext text/x-wiki #redirect [[Template:((/doc]] 509bb731d447456a18489848c8a1ce38feddabcc Template:!)/doc 10 78 99 2025-11-02T00:43:57Z ARTIFICER 564804 Importing default loadout wikitext text/x-wiki #redirect [[Template:((/doc]] 509bb731d447456a18489848c8a1ce38feddabcc Template:Pipe 10 79 100 2025-11-02T00:43:58Z ARTIFICER 564804 Importing default loadout wikitext text/x-wiki &#124;<noinclude>{{documentation}}</noinclude> 9d1875aa686e4e25a0994448a39d057e91541788 Template:Pipe/doc 10 80 101 2025-11-02T00:43:58Z ARTIFICER 564804 Importing default loadout wikitext text/x-wiki #redirect [[Template:((/doc]] 509bb731d447456a18489848c8a1ce38feddabcc Template:!! 10 81 102 2025-11-02T00:43:58Z ARTIFICER 564804 Importing default loadout wikitext text/x-wiki ||<noinclude>{{documentation}}</noinclude> 02fb31115eef5c15d6612ac334bf5a5d83155c0a Template:!!/doc 10 82 103 2025-11-02T00:43:59Z ARTIFICER 564804 Importing default loadout wikitext text/x-wiki #redirect [[Template:((/doc]] 509bb731d447456a18489848c8a1ce38feddabcc Template:License/template 10 83 104 2025-11-02T00:43:59Z ARTIFICER 564804 Importing default loadout wikitext text/x-wiki <includeonly><!-- --><div class="license {{{type|}}}" style="border: 1px solid var(--wiki-content-border-color); background: var(--wiki-content-background-color--secondary); align-items: center; padding: 5px; display: flex; gap: 1em;"> <div class="icon {{#if:{{{darkIcon|}}}|invert-on-dark}}">{{{icon|}}}</div> <div class="text">{{{text|}}}{{#if:{{{source|}}}|<br/><span class="source">Source:&nbsp;{{{source|}}}</span>}}{{{text2|}}}</div> </div><!-- --></includeonly><noinclude>{{documentation|Template:License/doc}}</noinclude> 7d0e694e6a42a5368b4b62ce6c01bfa2fb4e67b8 105 104 2025-11-02T00:43:59Z ARTIFICER 564804 Protected "[[Template:License/template]]" ([Edit=Allow only administrators] (indefinite) [Rename=Allow only administrators] (indefinite)) wikitext text/x-wiki <includeonly><!-- --><div class="license {{{type|}}}" style="border: 1px solid var(--wiki-content-border-color); background: var(--wiki-content-background-color--secondary); align-items: center; padding: 5px; display: flex; gap: 1em;"> <div class="icon {{#if:{{{darkIcon|}}}|invert-on-dark}}">{{{icon|}}}</div> <div class="text">{{{text|}}}{{#if:{{{source|}}}|<br/><span class="source">Source:&nbsp;{{{source|}}}</span>}}{{{text2|}}}</div> </div><!-- --></includeonly><noinclude>{{documentation|Template:License/doc}}</noinclude> 7d0e694e6a42a5368b4b62ce6c01bfa2fb4e67b8 Template:* 10 84 106 2025-11-02T00:43:59Z ARTIFICER 564804 Importing default loadout wikitext text/x-wiki &nbsp;&bull;&nbsp;<noinclude> {{doc}} [[Category:Formatting templates]] </noinclude> 81a7f0051da7b8f4a0548d91c5eb429a974fac91 Template:*/doc 10 85 107 2025-11-02T00:44:00Z ARTIFICER 564804 Importing default loadout wikitext text/x-wiki This is the '''bullet''' template; it looks like this: [&nbsp;&bull;&nbsp;] It works similarly to the HTML markup sequence: [<code>'''&amp;nbsp;&amp;bull;&amp;nbsp;'''</code>], that is, a non-breaking space, a bullet and a non-breaking space. This template is used when you want a larger bullet than a bold middot ['''&middot;'''], but something smaller than an en dash [&ndash;]. <noinclude>[[Category:Template documentation]]</noinclude> ea04fe63a10dc333ed9c48bfc397debb11682f1e Template:Key 10 86 108 2025-11-02T00:44:00Z ARTIFICER 564804 Importing default loadout wikitext text/x-wiki <includeonly><!-- -->{{#vardefine:platform | {{#if: {{{2|}}} | {{#switch: {{lc:{{{1|}}}}} <!-- Desktop --> |mouse |keyboard=keyboard <!-- Mobile --> |gesture=gesture <!-- Microsoft --> |xboxseries |xbox=Xbox |xbox one |xbone |xbox1 |xboxone=xboxone |xbox 360 |xb360 |xbox360 |360=360 <!-- Sony --> |ps |ps5 |playstation |ds |dualsense=DualSense |playstation 4 |ps4=PS4 |playstation 3 |ps3=ps3 <!-- Nintendo --> |ns |switch=Switch |wii=wii |gamecube |ngc |gc |gcn=Gamecube }} | undefined }} }}<!-- -->{{#vardefine:key | {{#if: {{{2|}}} | {{ucfirst:{{{2}}}}} | {{ucfirst:{{{1}}}}} }} }}<!-- -->{{#vardefine:img | {{#if: {{{2|}}} | [[File:{{#var:platform}} {{#switch: {{#var:platform}} |Gamecube={{lc:{{#var:key}}}} |{{#var:key}}}}.{{#switch: {{#var:platform}} |Gamecube=svg |png}}|x25px|link=]] }} | Undefined }}<!-- --><span class="key">{{#var:img}}</span><!-- --></includeonly><!-- --><noinclude>{{doc}}</noinclude> e1a9e85405b630a77bc33bd39105e91861ecc3c0 Template:Key/doc 10 87 109 2025-11-02T00:44:01Z ARTIFICER 564804 Importing default loadout wikitext text/x-wiki <templatedata> { "params": { "1": { "label": "Console or Device", "description": "The console for the controller, or the device, with the button to display", "type": "string", "suggestedvalues": [ "Keyboard", "Gesture", "Xbox", "PS5", "PS4", "PS3", "Switch", "Wii", "GameCube" ] }, "2": { "label": "Key or Button", "description": "The name of the key or button to display", "type": "string" } }, "format": "inline", "description": "This is an icon template used to display controls, buttons, and keys from a computer keyboard or video game controllers.", "paramOrder": [ "1", "2" ] } </templatedata> ==Examples== <tabber> |-|Desktop= Images source: [[dev:Category:Desktop input images]] === Keyboard === <code><nowiki>{{Key|Keyboard|A}}</nowiki></code> {{Key|Keyboard|A}} <code><nowiki>{{Key|Keyboard|A outline}}</nowiki></code> {{Key|Keyboard|A outline}} === Mouse === <code><nowiki>{{Key|Keyboard|Left}}</nowiki></code> {{Key|Keyboard|White Mouse Left}} <code><nowiki>{{Key|Keyboard|Right}}</nowiki></code> {{Key|Keyboard|White Mouse Right}} |-|Mobile={{:Template:Key/doc/Gesture}} |-|Xbox={{:Template:Key/doc/Xbox}} |-|DualSense={{:Template:Key/doc/DualSense}} |-|PlayStation 4={{:Template:Key/doc/PS4}} |-|Nintendo Switch={{:Template:Key/doc/Nintendo Switch}} |-|Nintendo GameCube= Images source: [[dev:Category:Nintendo GameCube input images]] === Controller === <code><nowiki>{{Key|GameCube|controller}}</nowiki></code> {{Key|GameCube|controller}} === Face buttons === <code><nowiki>{{Key|GameCube|A}}</nowiki></code> {{Key|GameCube|A}} <code><nowiki>{{Key|GameCube|A outline}}</nowiki></code> {{Key|GameCube|A outline}} <code><nowiki>{{Key|GameCube|A color}}</nowiki></code> {{Key|GameCube|A color}} <code><nowiki>{{Key|GameCube|A color outline}}</nowiki></code> {{Key|GameCube|A color outline}} <code><nowiki>{{Key|GameCube|B}}</nowiki></code> {{Key|GameCube|B}} <code><nowiki>{{Key|GameCube|B outline}}</nowiki></code> {{Key|GameCube|B outline}} <code><nowiki>{{Key|GameCube|B color}}</nowiki></code> {{Key|GameCube|B color}} <code><nowiki>{{Key|GameCube|B color outline}}</nowiki></code> {{Key|GameCube|B color outline}} <code><nowiki>{{Key|GameCube|X}}</nowiki></code> {{Key|GameCube|X}} <code><nowiki>{{Key|GameCube|X outline}}</nowiki></code> {{Key|GameCube|X outline}} <code><nowiki>{{Key|GameCube|Y}}</nowiki></code> {{Key|GameCube|Y}} <code><nowiki>{{Key|GameCube|Y outline}}</nowiki></code> {{Key|GameCube|Y outline}} === Other buttons === <code><nowiki>{{Key|GameCube|start}}</nowiki></code> {{Key|GameCube|start}} <code><nowiki>{{Key|GameCube|start outline}}</nowiki></code> {{Key|GameCube|start outline}} <code><nowiki>{{Key|GameCube|left trigger}}</nowiki></code> {{Key|GameCube|left trigger}} <code><nowiki>{{Key|GameCube|left trigger outline}}</nowiki></code> {{Key|GameCube|left trigger outline}} <code><nowiki>{{Key|GameCube|right trigger}}</nowiki></code> {{Key|GameCube|right trigger}} <code><nowiki>{{Key|GameCube|right trigger outline}}</nowiki></code> {{Key|GameCube|right trigger outline}} <code><nowiki>{{Key|GameCube|Z}}</nowiki></code> {{Key|GameCube|Z}} <code><nowiki>{{Key|GameCube|Z outline}}</nowiki></code> {{Key|GameCube|Z outline}} <code><nowiki>{{Key|GameCube|Z color}}</nowiki></code> {{Key|GameCube|Z color}} <code><nowiki>{{Key|GameCube|Z color outline}}</nowiki></code> {{Key|GameCube|Z color outline}} === Left stick === <code><nowiki>{{Key|GameCube|stick}}</nowiki></code> {{Key|GameCube|stick}} <code><nowiki>{{Key|GameCube|stick left}}</nowiki></code> {{Key|GameCube|stick left}} <code><nowiki>{{Key|GameCube|stick right}}</nowiki></code> {{Key|GameCube|stick right}} <code><nowiki>{{Key|GameCube|stick horizontal}}</nowiki></code> {{Key|GameCube|stick horizontal}} <code><nowiki>{{Key|GameCube|stick up}}</nowiki></code> {{Key|GameCube|stick up}} <code><nowiki>{{Key|GameCube|stick down}}</nowiki></code> {{Key|GameCube|stick down}} <code><nowiki>{{Key|GameCube|stick vertical}}</nowiki></code> {{Key|GameCube|stick vertical}} === C-stick === <code><nowiki>{{Key|GameCube|c stick}}</nowiki></code> {{Key|GameCube|c stick}} <code><nowiki>{{Key|GameCube|c stick color}}</nowiki></code> {{Key|GameCube|c stick color}} <code><nowiki>{{Key|GameCube|c stick left}}</nowiki></code> {{Key|GameCube|c stick left}} <code><nowiki>{{Key|GameCube|c stick left color}}</nowiki></code> {{Key|GameCube|c stick left color}} <code><nowiki>{{Key|GameCube|c stick right}}</nowiki></code> {{Key|GameCube|c stick right}} <code><nowiki>{{Key|GameCube|c stick right color}}</nowiki></code> {{Key|GameCube|c stick right color}} <code><nowiki>{{Key|GameCube|c stick horizontal}}</nowiki></code> {{Key|GameCube|c stick horizontal}} <code><nowiki>{{Key|GameCube|c stick horizontal color}}</nowiki></code> {{Key|GameCube|c stick horizontal color}} <code><nowiki>{{Key|GameCube|c stick up}}</nowiki></code> {{Key|GameCube|c stick up}} <code><nowiki>{{Key|GameCube|c stick up color}}</nowiki></code> {{Key|GameCube|c stick up color}} <code><nowiki>{{Key|GameCube|c stick down}}</nowiki></code> {{Key|GameCube|c stick down}} <code><nowiki>{{Key|GameCube|c stick down color}}</nowiki></code> {{Key|GameCube|c stick down color}} <code><nowiki>{{Key|GameCube|c stick vertical}}</nowiki></code> {{Key|GameCube|c stick vertical}} <code><nowiki>{{Key|GameCube|c stick vertical color}}</nowiki></code> {{Key|GameCube|c stick vertical color}} === Directional pad === <code><nowiki>{{Key|GameCube|dpad}}</nowiki></code> {{Key|GameCube|dpad}} <code><nowiki>{{Key|GameCube|dpad outline}}</nowiki></code> {{Key|GameCube|dpad outline}} <code><nowiki>{{Key|GameCube|dpad all}}</nowiki></code> {{Key|GameCube|dpad all}} <code><nowiki>{{Key|GameCube|dpad left}}</nowiki></code> {{Key|GameCube|dpad left}} <code><nowiki>{{Key|GameCube|dpad left outline}}</nowiki></code> {{Key|GameCube|dpad left outline}} <code><nowiki>{{Key|GameCube|dpad right}}</nowiki></code> {{Key|GameCube|dpad right}} <code><nowiki>{{Key|GameCube|dpad right outline}}</nowiki></code> {{Key|GameCube|dpad right outline}} <code><nowiki>{{Key|GameCube|dpad horizontal}}</nowiki></code> {{Key|GameCube|dpad horizontal}} <code><nowiki>{{Key|GameCube|dpad horizontal outline}}</nowiki></code> {{Key|GameCube|dpad horizontal outline}} <code><nowiki>{{Key|GameCube|dpad up}}</nowiki></code> {{Key|GameCube|dpad up}} <code><nowiki>{{Key|GameCube|dpad up outline}}</nowiki></code> {{Key|GameCube|dpad up outline}} <code><nowiki>{{Key|GameCube|dpad down}}</nowiki></code> {{Key|GameCube|dpad down}} <code><nowiki>{{Key|GameCube|dpad down outline}}</nowiki></code> {{Key|GameCube|dpad down outline}} <code><nowiki>{{Key|GameCube|dpad vertical}}</nowiki></code> {{Key|GameCube|dpad vertical}} <code><nowiki>{{Key|GameCube|dpad vertical outline}}</nowiki></code> {{Key|GameCube|dpad vertical outline}} </tabber> <noinclude>[[Category:Key template documentation]]</noinclude> 22596b56b7a13ee3df540bfd7c3463d45fa8b74e Template:Key/doc/Gesture 10 88 110 2025-11-02T00:44:01Z ARTIFICER 564804 Importing default loadout wikitext text/x-wiki Images source: [[dev:Category:Gesture input images]] === Fingers === <code><nowiki>{{key|gesture|Finger Front}}</nowiki></code> {{key|gesture|Finger Front}} <code><nowiki>{{key|gesture|Finger Side}}</nowiki></code> {{key|gesture|Finger Side}} === Tap & hold === <code><nowiki>{{key|gesture|Tap}}</nowiki></code> {{key|gesture|Tap}} <code><nowiki>{{key|gesture|Double Tap}}</nowiki></code> {{key|gesture|Double Tap}} <code><nowiki>{{key|gesture|Hold}}</nowiki></code> {{key|gesture|Hold}} === Swipe motions === <code><nowiki>{{key|gesture|Swipe Bottom Left}}</nowiki></code> {{key|gesture|Swipe Bottom Left}} <code><nowiki>{{key|gesture|Swipe Bottom Right}}</nowiki></code> {{key|gesture|Swipe Bottom Right}} <code><nowiki>{{key|gesture|Swipe Down}}</nowiki></code> {{key|gesture|Swipe Down}} <code><nowiki>{{key|gesture|Swipe Left}}</nowiki></code> {{key|gesture|Swipe Left}} <code><nowiki>{{key|gesture|Swipe Right}}</nowiki></code> {{key|gesture|Swipe Right}} <code><nowiki>{{key|gesture|Swipe Top Left}}</nowiki></code> {{key|gesture|Swipe Top Left}} <code><nowiki>{{key|gesture|Swipe Top Right}}</nowiki></code> {{key|gesture|Swipe Top Right}} <code><nowiki>{{key|gesture|Swipe Up}}</nowiki></code> {{key|gesture|Swipe Up}} === Zoom & scroll === <code><nowiki>{{key|gesture|Zoom In}}</nowiki></code> {{key|gesture|Zoom In}} <code><nowiki>{{key|gesture|Zoom Out}}</nowiki></code> {{key|gesture|Zoom Out}} <code><nowiki>{{key|gesture|Scroll Down}}</nowiki></code> {{key|gesture|Scroll Down}} <code><nowiki>{{key|gesture|Scroll Left}}</nowiki></code> {{key|gesture|Scroll Left}} <code><nowiki>{{key|gesture|Scroll Right}}</nowiki></code> {{key|gesture|Scroll Right}} <code><nowiki>{{key|gesture|Scroll Up}}</nowiki></code> {{key|gesture|Scroll Up}} === Circular motions === <code><nowiki>{{key|gesture|Double Rotate}</nowiki></code> {{key|gesture|Double Rotate}} <code><nowiki>{{key|gesture|Full Circle}}</nowiki></code> {{key|gesture|Full Circle}} <code><nowiki>{{key|gesture|Half Circle}}</nowiki></code> {{key|gesture|Half Circle}} <code><nowiki>{{key|gesture|Quarter Circle}}</nowiki></code> {{key|gesture|Quarter Circle}} __NOTOC__ <noinclude>[[Category:Key template documentation]]</noinclude> 0a595b125cc6dbd6ad531c1e989d1929eaf1c6e2 Template:Key/doc/PS4 10 89 111 2025-11-02T00:44:02Z ARTIFICER 564804 Importing default loadout wikitext text/x-wiki Images source: [[dev:Category:PS4 input images]] === D-pad & sticks === <code><nowiki>{{key|PS4|Dpad}}</nowiki></code> {{key|PS4|Dpad}} <code><nowiki>{{key|PS4|Left}}</nowiki></code> {{key|PS4|Left}} <code><nowiki>{{key|PS4|Right}}</nowiki></code> {{key|PS4|Right}} <code><nowiki>{{key|PS4|Up}}</nowiki></code> {{key|PS4|Up}} <code><nowiki>{{key|PS4|Down}}</nowiki></code> {{key|PS4|Down}} <code><nowiki>{{key|PS4|Left Stick}}</nowiki></code> {{key|PS4|Left Stick}} <code><nowiki>{{key|PS4|Right Stick}}</nowiki></code> {{key|PS4|Right Stick}} <code><nowiki>{{key|PS4|Touch Pad}}</nowiki></code> {{key|PS4|Touch Pad}} === Front buttons === <code><nowiki>{{key|PS4|Circle}}</nowiki></code> {{key|PS4|Circle}} <code><nowiki>{{key|PS4|Cross}}</nowiki></code> {{key|PS4|Cross}} <code><nowiki>{{key|PS4|Square}}</nowiki></code> {{key|PS4|Square}} <code><nowiki>{{key|PS4|Triangle}}</nowiki></code> {{key|PS4|Triangle}} <code><nowiki>{{key|PS4|Share}}</nowiki></code> {{key|PS4|Share}} <code><nowiki>{{key|PS4|Options}}</nowiki></code> {{key|PS4|Options}} === Rear buttons === <code><nowiki>{{key|PS4|L1}}</nowiki></code> {{key|PS4|L1}} <code><nowiki>{{key|PS4|R1}}</nowiki></code> {{key|PS4|R1}} <code><nowiki>{{key|PS4|L2}}</nowiki></code> {{key|PS4|L2}} <code><nowiki>{{key|PS4|R2}}</nowiki></code> {{key|PS4|R2}} <noinclude>[[Category:Key template documentation]]</noinclude> 1672e7f0dcd4db09545c96936cfbabcab681cfeb Template:Key/doc/Nintendo Switch 10 90 112 2025-11-02T00:44:02Z ARTIFICER 564804 Importing default loadout wikitext text/x-wiki Images source: [[dev:Category:Nintendo Switch input images]] === Nintendo Switch === <code><nowiki>{{Key|Switch|a}}</nowiki></code> {{Key|Switch|a}} <code><nowiki>{{Key|Switch|b}}</nowiki></code> {{Key|Switch|b}} <code><nowiki>{{Key|Switch|x}}</nowiki></code> {{Key|Switch|x}} <code><nowiki>{{Key|Switch|y}}</nowiki></code> {{Key|Switch|y}} <code><nowiki>{{Key|Switch|Left Stick}}</nowiki></code> {{Key|Switch|Left Stick}} <code><nowiki>{{Key|Switch|Right Stick}}</nowiki></code> {{Key|Switch|Right Stick}} <code><nowiki>{{Key|Switch|Left Stick Press}}</nowiki></code> {{Key|Switch|Left Stick Press}} <code><nowiki>{{Key|Switch|Right Stick Press}}</nowiki></code> {{Key|Switch|Right Stick Press}} <code><nowiki>{{Key|Switch|-}}</nowiki></code> {{Key|Switch|-}} <code><nowiki>{{Key|Switch|+}}</nowiki></code> {{Key|Switch|+}} <code><nowiki>{{Key|Switch|Capture}}</nowiki></code> {{Key|Switch|Capture}} <code><nowiki>{{Key|Switch|HOME}}</nowiki></code> {{Key|Switch|HOME}} <code><nowiki>{{Key|Switch|L}}</nowiki></code> {{Key|Switch|L}} <code><nowiki>{{Key|Switch|R}}</nowiki></code> {{Key|Switch|R}} <code><nowiki>{{Key|Switch|ZL}}</nowiki></code> {{Key|Switch|ZL}} <code><nowiki>{{Key|Switch|ZR}}</nowiki></code> {{Key|Switch|ZR}} === Pro Controller === <code><nowiki>{{Key|Switch|Pro Control Pad}}</nowiki></code> {{Key|Switch|Pro Control Pad}} <code><nowiki>{{Key|Switch|Pro Control Pad Left}}</nowiki></code> {{Key|Switch|Pro Control Pad Left}} <code><nowiki>{{Key|Switch|Pro Control Pad Right}}</nowiki></code> {{Key|Switch|Pro Control Pad Right}} <code><nowiki>{{Key|Switch|Pro Control Pad Up}}</nowiki></code> {{Key|Switch|Pro Control Pad Up}} <code><nowiki>{{Key|Switch|Pro Control Pad Down}}</nowiki></code> {{Key|Switch|Pro Control Pad Down}} === Joy-Con === <code><nowiki>{{Key|Switch|Directional Left}}</nowiki></code> {{Key|Switch|Directional Left}} <code><nowiki>{{Key|Switch|Directional Right}}</nowiki></code> {{Key|Switch|Directional Right}} <code><nowiki>{{Key|Switch|Directional Up}}</nowiki></code> {{Key|Switch|Directional Up}} <code><nowiki>{{Key|Switch|Directional Down}}</nowiki></code> {{Key|Switch|Directional Down}} ==== Diagrams ==== <code><nowiki>{{Key|Switch|Joy-Con}}</nowiki></code> {{Key|Switch|Joy-Con}} <code><nowiki>{{Key|Switch|Joy-Con Separate}}</nowiki></code> {{Key|Switch|Joy-Con Separate}} <code><nowiki>{{Key|Switch|Joy-Con Left}}</nowiki></code> {{Key|Switch|Joy-Con Left}} <code><nowiki>{{Key|Switch|Joy-Con Right}}</nowiki></code> {{Key|Switch|Joy-Con Right}} __NOTOC__ <noinclude>[[Category:Key template documentation]]</noinclude> 34ef402e3bd539920ee4247d68882ecb53fc6eda Template:Spoiler 10 91 113 2025-11-02T00:44:02Z ARTIFICER 564804 Importing default loadout wikitext text/x-wiki <includeonly><!-- Base code written for Terraria Wiki: https://terraria.wiki.gg/wiki/Template:Spoiler NOTE: This template needs a JavaScript function in MediaWiki:Common.js or MediaWiki:Vector.js to work, as well as styling in MediaWiki:Common.css or MediaWiki:Vector.css for the related classes -->{{#vardefine:element|{{#if:{{{block|}}}|div|span}}}}<!-- -->{{#tag:{{#var:element}}|{{#tag:{{#var:element}}|{{{1|}}}}}|class=spoiler-content {{{class|}}}|id={{{id|}}}|style={{{css|{{{style|}}}}}} }}<!-- -->[[Category:Pages with spoilers]]<!-- --></includeonly><noinclude> {{doc}} [[Category:Formatting templates]] </noinclude> 2da5f6bb4ec1204941f5ba21a2196cd35eccdb23 Template:Spoiler/doc 10 92 114 2025-11-02T00:44:03Z ARTIFICER 564804 Importing default loadout wikitext text/x-wiki This template is used to mark text and other elements as spoilers. Users can click or optionally hover to reveal their content. == The hoverShowSpoilers gadget == Users can enable the <code>[[MediaWiki:Gadgets/hoverShowSpoilers|hoverShowSpoilers]]</code> gadget to make spoilers show on hover, not just on click. The code for this gadget can be found at [[MediaWiki:Gadgets/hoverShowSpoilers/main.css]]. == Examples == {| class="wikitable" ! Code !! Result |- | <code><nowiki>{{spoiler|spoiler text}}</nowiki></code> (Click to toggle) || {{spoiler|spoiler text}} |- | <code><nowiki>{{spoiler|spoiler text with a [[Template:Navbox|link]]}}</nowiki></code> (Click to toggle) || {{spoiler|spoiler text with a [[Template:Navbox|link]]}} |- | <pre> {{spoiler|block=y|Really long spoiler that spans multiple lines It even has a bulleted list inside it: * Item a * Item b * [[Special:Random|Item c]] }}</pre> |{{spoiler|block=y|Really long spoiler that spans multiple lines It even has a bulleted list inside it: * Item a * Item b * [[Special:Random|Item c]] }} |} == Dependencies == For this template to work properly, you need the following: * The <code>spoilers</code> gadget with JavaScript code for toggling the <code>.spoiler</code> class on/off on click: ** [[MediaWiki:Gadgets/spoilers]] ** [[MediaWiki:Gadgets/spoilers/main.js]] * The <code>.spoiler-content</code> and any related classes, found in [[MediaWiki:Common.css]]. == Source == Base code adapted from [[wgg:terraria:Template:Spoiler|Template:Spoiler on Terraria Wiki]]. ==TemplateData== <templatedata> { "params": { "1": { "aliases": [ "text" ], "label": "Text", "description": "The text to be shown.", "example": "Character A died during the battle.", "type": "content", "required": true }, "hover": { "label": "Show on Hover?", "description": "Show spoiler text on mouse hover.", "example": "hover=yes", "type": "boolean", "default": "hover=no" }, "block": { "label": "Display as block?", "description": "If given, display the spoiler as a block instead of inline. Useful for long spoilers spanning multiple lines or using block-level elements like lists.", "example": "y", "type": "boolean", "suggested": true }, "class": { "label": "Class", "description": "A class or classes to apply to the spoiler", "type": "string" }, "id": { "label": "ID", "description": "A CSS ID to apply to the spoiler.", "type": "string" }, "style": { "description": "Inline CSS styles to pass in.", "type": "string", "aliases": [ "css" ], "label": "Style" } }, "description": "This template can be used to mark text as a spoiler.", "maps": { "1": {} }, "paramOrder": [ "1", "hover", "block", "class", "id", "style" ], "format": "inline" } </templatedata> <noinclude>[[Category:Template documentation]]</noinclude> bae231a84e57129ec12ba47e554ed42e76c185e0 Template:Link icon 10 93 115 2025-11-02T00:44:03Z ARTIFICER 564804 Importing default loadout wikitext text/x-wiki <includeonly>{{#vardefine:target|{{{1|}}}<!-- end vd -->}}<!-- -->{{#vardefine:display|{{#if:{{{2|}}}|{{{2}}}|{{{1}}}<!-- end if -->}}<!-- end vd -->}}<!-- -->{{#vardefine:iconSize|1.2em}}<!-- -->{{#vardefine:lineHeight|1lh}}<!-- -->{{#vardefine:fileExists|{{filepath:{{#var:target}} ({{{type}}}).png}}}}<!-- -->{{#ifeq: {{{2|}}} | notext <!-- start if notext -->|<span class="link-icon notext" style="--link-icon-size: {{#var:iconSize}}; --link-icon-line-height: {{#var:lineHeight}};"><!-- start notext icon element -->{{#if: {{#var:fileExists}} <!-- start icon if -->| <span class="regular">[[File:{{#var:target}} ({{{type}}}).png|link={{#var:target}}|alt=]]</span><!-- end regular icon -->| <span class="fallback">[[File:{{{1}}} ({{{type}}}).png|?]]</span><!-- end fallback icon (?) -->}}<!-- end icon if --></span><!-- end notext icon -->|<span class="link-icon" style="--link-icon-size: {{#var:iconSize}}; --link-icon-line-height: {{#var:lineHeight}};"><!-- start icon + text element -->{{#if: {{#var:fileExists}} <!-- start icon if -->| <span class="regular">[[File:{{#var:target}} ({{{type}}}).png|link={{#var:target}}|alt=]]</span><!-- end regular icon -->| <span class="fallback">[[File:{{{1}}} ({{{type}}}).png|?]]</span><!-- end fallback icon (?) -->}}&nbsp;<!-- end icon if --><span class="display-text">[[{{#var:target}}|{{#var:display}}]]</span><!-- end display text --></span> <!-- end icon + text element -->}}<!-- end if notext --></includeonly><noinclude>{{Documentation}}[[Category:Formatting templates]]</noinclude> a8fc86aa3dc0f0085e5d1236a47e8d04e8685684 Template:Link icon/doc 10 94 116 2025-11-02T00:44:03Z ARTIFICER 564804 Importing default loadout wikitext text/x-wiki {{No direct use}} == List of link icon templates == * {{tl|Character icon}} * {{tl|Item icon}} == Dependencies== For this template to work properly, you need the following: * The <code>.link-icon</code> class and any related classes, found in [[MediaWiki:Common.css]]. <noinclude>[[Category:Template documentation]]</noinclude> 654dfb540ea31a810ef53c3820862942e63b2e8a Template:I 10 95 117 2025-11-02T00:44:03Z ARTIFICER 564804 Importing default loadout wikitext text/x-wiki #REDIRECT [[Template:Link icon]] 6ebdedb4de95efaa3e6ca27590e79aca674f2364 Template:Quote 10 96 118 2025-11-02T00:44:04Z ARTIFICER 564804 Importing default loadout wikitext text/x-wiki <includeonly><!-- --><div class="quote"><!-- start quote wrapper --><div class="marks-wrapper"><!-- start marks wrapper --><div class="block"><!-- start quote block -->{{#if:{{{title|}}}|<div class="title">{{{title}}}</div>|}}<!-- -->{{#if:{{{text|{{{1|}}}}}}|<div class="text">{{{text|{{{1|}}}}}}</div>|}}<!-- --></div><!-- end quote block --></div><!-- end marks wrapper -->{{#if:{{{author|{{{2|}}}}}}|<div class="author">― {{#if:{{{authorpage|}}}| [[{{{authorpage}}}|{{{author|{{{2|}}}}}}]] | {{{author|{{{2|}}}}}} }}</div>|}}<!-- --></div><!-- -->[[Category:Pages with quotes]]</includeonly><noinclude>{{Documentation}}[[Category:Formatting templates]]</noinclude> 095258ceee92819a4e7b83c26fba3761bf9c41a9 Template:Item icon 10 97 119 2025-11-02T00:44:04Z ARTIFICER 564804 Importing default loadout wikitext text/x-wiki <includeonly>{{Link icon|{{{1|}}}|{{{2|}}}|type=Item}}</includeonly><noinclude>{{documentation}}[[Category:Formatting templates]]</noinclude> 6564279e3808e659b8034ad4b96f4f9e9e498b57 Template:Item icon/doc 10 98 120 2025-11-02T00:44:04Z ARTIFICER 564804 Importing default loadout wikitext text/x-wiki == Summary == <templatedata> { "params": { "1": { "aliases": [ "page" ], "label": "Page Name", "description": "The name for the target page.", "example": "Page Name", "type": "wiki-page-name", "required": true }, "2": { "aliases": [ "label" ], "label": "Link Label", "description": "The text to the be displayed on the link icon's label.", "example": "Alternative Page Name", "type": "line" } }, "description": "Use this template to display an icon next to a page link.\n\nThis template assumes that each page has an icon uploaded at a specific location, namely \"File:Page Name (Item).png\".", "format": "inline" } </templatedata> == Examples == For the examples below, <code><nowiki>File:Mystic Feather (Item).png</nowiki></code> was used as the icon for a page called <code>Mystic Feather</code>. {| class="wikitable" ! Code !! Result |- | <code><nowiki>{{Item icon|Mystic Feather}}</nowiki></code> || {{Item icon|Mystic Feather}} |- | <code><nowiki>{{Item icon|Mystic Feather|Mystic Feathers}}</nowiki></code> || {{Item icon|Mystic Feather|Mystic Feathers}} |- | <code><nowiki>{{Item icon|Mystic Feather|notext}}</nowiki></code> || {{Item icon|Mystic Feather|notext}} |- | <code><nowiki>{{Item icon|Missing Item}}</nowiki></code> (Missing Page Icon) || {{Item icon|Missing Item}} |} == Dependencies== For this template to work properly, you need the following: * The base {{tl|Link icon}} template. * The <code>.link-icon</code> class and any related classes, found in [[MediaWiki:Common.css]]. 4dfcab6f3d3c88596068607685645f29666f0141 Template:Character icon 10 99 121 2025-11-02T00:44:04Z ARTIFICER 564804 Importing default loadout wikitext text/x-wiki <includeonly>{{Link icon|{{{1|}}}|{{{2|}}}|type=Character}}</includeonly><noinclude>{{documentation}}[[Category:Formatting templates]]</noinclude> 24bad84fd5dea93cab210dfd592fda86af09eb87 Template:Character icon/doc 10 100 122 2025-11-02T00:44:05Z ARTIFICER 564804 Importing default loadout wikitext text/x-wiki == Summary == <templatedata> { "params": { "1": { "aliases": [ "page" ], "label": "Page Name", "description": "The name for the target page.", "example": "Page Name", "type": "wiki-page-name", "required": true }, "2": { "aliases": [ "label" ], "label": "Link Label", "description": "The text to the be displayed on the link icon's label.", "example": "Alternative Page Name", "type": "line" } }, "description": "Use this template to display an icon next to a page link.\n\nThis template assumes that each page has an icon uploaded at a specific location, namely \"File:Page Name (Character).png\".", "format": "inline" } </templatedata> == Examples == For the examples below, <code><nowiki>File:Invisible Boy (Character).png</nowiki></code> was used as the icon for a page called <code>Invisible Boy</code>. {| class="wikitable" ! Code !! Result |- | <code><nowiki>{{Character icon|Invisible Boy}}</nowiki></code> || {{Character icon|Invisible Boy}} |- | <code><nowiki>{{Character icon|Invisible Boy|The Invisible Boy}}</nowiki></code> || {{Character icon|Invisible Boy|The Invisible Boy}} |- | <code><nowiki>{{Character icon|Invisible Boy|notext}}</nowiki></code> || {{Character icon|Invisible Boy|notext}} |- | <code><nowiki>{{Character icon|Missing Boy}}</nowiki></code> (Missing Page Icon) || {{Character icon|Missing Boy}} |} == Dependencies== For this template to work properly, you need the following: * The base {{tl|Link icon}} template. * The <code>.link-icon</code> class and any related classes, found in [[MediaWiki:Common.css]]. 0999a706143c16f5ed970816e7825239cfce9547 Template:Quote/doc 10 101 123 2025-11-02T00:44:05Z ARTIFICER 564804 Importing default loadout wikitext text/x-wiki == Examples == {| class="wikitable" ! Code !! Result |- | <pre>{{Quote|text=Now is the winter of our discontent made glorious summer by this sun of York}}</pre> | {{Quote|text=Now is the winter of our discontent made glorious summer by this sun of York}} |- | <pre>{{Quote |title=Opening lines of ''Richard III'' |text=Now is the winter of our discontent made glorious summer by this sun of York}}</pre> | {{Quote |title=Opening lines of ''Richard III'' |text=Now is the winter of our discontent made glorious summer by this sun of York}} |- | <pre>{{Quote |title=Opening lines of ''Richard III'' |author=William Shakespeare |text=Now is the winter of our discontent made glorious summer by this sun of York}}</pre> | {{Quote |title=Opening lines of ''Richard III'' |author=William Shakespeare |text=Now is the winter of our discontent made glorious summer by this sun of York}} |- | <pre>{{Quote |title=Opening lines of ''Richard III'' |author=William Shakespeare |authorpage=wikipedia:William Shakespeare |text=Now is the winter of our discontent made glorious summer by this sun of York}}</pre> | {{Quote |title=Opening lines of ''Richard III'' |author=William Shakespeare |authorpage=wikipedia:William Shakespeare |text=Now is the winter of our discontent made glorious summer by this sun of York}} |- | <pre>{{Quote |author=William Shakespeare |authorpage=wikipedia:William Shakespeare |text=Now is the winter of our discontent made glorious summer by this sun of York}}</pre> | {{Quote |author=William Shakespeare |authorpage=wikipedia:William Shakespeare |text=Now is the winter of our discontent made glorious summer by this sun of York}} |} == Dependencies == For this template to work properly, you need the following: * The <code>.quote</code> and any related classes, found in [[MediaWiki:Common.css]]. <noinclude>[[Category:Template documentation]]</noinclude> == Template data (for Visual Editor) == <templatedata> { "params": { "title": { "label": "Title", "description": "If the quote has a title, put it here.", "example": "Richard III's soliloquy", "type": "line" }, "text": { "label": "Quoted Text", "description": "The quoted text to be displayed.", "example": "Now is the winter of our discontent made glorious summer by this sun of York", "type": "string", "required": true }, "author": { "label": "Quote's Author", "description": "The author of the displayed quote.", "example": "William Shakespeare", "type": "line", "suggested": true }, "authorpage": { "label": "Author's Page", "description": "If the quote's author has a page on the Wiki, put the page name here.", "example": "William Shakespeare (playwright)", "type": "wiki-page-name", "suggested": true } }, "description": "This template creates a styled block element for quotes.", "paramOrder": [ "text", "author", "authorpage", "title" ], "format": "block" } </templatedata> 8a10e77de70ff704435282ce0f2ba792a13404a5 Template:Hatnote 10 102 124 2025-11-02T00:44:05Z ARTIFICER 564804 Importing default loadout wikitext text/x-wiki <includeonly><!-- -->[[Category:Pages with hatnotes]]<!-- --><div class="hatnote {{#if:{{{icon|}}}|icon}} noexcerpt">{{#if:{{{icon|}}}|[[File:{{{icon}}}|x22px]]<nowiki> </nowiki>}}{{{1|}}}</div><!-- --></includeonly><!-- --><noinclude>{{doc}}[[Category:Hatnote templates| ]]</noinclude> 7d46b899835bfd29a8fbee088499bc7a6acb2587 Template:Hatnote/doc 10 103 125 2025-11-02T00:44:05Z ARTIFICER 564804 Importing default loadout wikitext text/x-wiki {{No direct use}} == List of hatnote templates == * {{tl|Disambiguation}} * {{tl|Distinguish}} * {{tl|For}} * {{tl|Main}} == Dependencies == For this template to work properly, you need the following: * The <code>.hatnote</code> class, found in [[MediaWiki:Common.css]]. * The <code>--wiki-content-border-color--secondary</code> CSS variable, defined in [[MediaWiki:Common.css]]. <noinclude>[[Category:Template documentation]]</noinclude> 464f2f866befaf4cfa47f68ab0ad4f170c13463d Template:Disambiguation/doc 10 104 126 2025-11-02T00:44:06Z ARTIFICER 564804 Importing default loadout wikitext text/x-wiki <templatedata> { "params": { "1": { "label": "Disambiguation Page", "description": "A custom disambiguation page name.", "example": "Disambiguation Page", "type": "wiki-page-name" }, "2": { "label": "Link Label", "description": "A label for the custom disambiguation page.", "example": "Alternative Page Name", "type": "line" }, "topic": { "label": "Custom Topic", "description": "In case {{PAGENAME}} does not describe the topic, this can be used to display a custom topic", "example": "a custom topic", "default": "{{PAGENAME}}", "type": "line" } }, "description": "This hatnote template is meant to be used at the top of an article to indicate the existence of a disambiguation page.", "paramOrder": [ "1", "2", "topic" ], "format": "inline" } </templatedata> == Examples == {| class="wikitable" ! Code !! Result |- | <code><nowiki>{{Disambiguation}}</nowiki></code> || {{Disambiguation|topic=Example}} |- | <code><nowiki>{{Disambiguation|Special:Random|topic=Example}}</nowiki></code> || {{Disambiguation|Special:Random|topic=Example}} |- | <code><nowiki>{{Disambiguation|Special:Random|Page Label|topic=this particular topic}}</nowiki></code> || {{Disambiguation|Special:Random|Page Label|topic=this particular topic}} |} == Dependencies == For this template to work properly, you need the following: * The {{tl|Hatnote}} base template. * The <code>.hatnote</code> class, found in [[MediaWiki:Common.css]]. == Source == Roughly based on [[wikipedia:Template:About|Wikipedia's About Template]]. <noinclude>[[Category:Template documentation]]</noinclude> 5fce9c689120c57454571ff0e60a2cd447df5713 Template:Disambiguation 10 105 127 2025-11-02T00:44:06Z ARTIFICER 564804 Importing default loadout wikitext text/x-wiki <includeonly><!-- -->{{#vardefine:topic|<!-- start vd -->{{#if:{{{topic|}}} | {{{topic}}} | {{PAGENAME}} }}<!-- end if -->}}<!-- end vd -->{{#vardefine:disambig|<!-- start vd -->{{#if:{{{1|}}}<!-- start custom disambig if -->|{{{1}}}<!-- start label if -->{{#if:{{{2|}}} | {{!}}{{{2}}} }}<!-- end label if -->|{{#var:topic}} (disambiguation)<!-- else; use regular disambig -->}}<!-- end custom disambig if -->}}<!-- end vd -->{{Hatnote|<!-- -->This page is about '''{{#var:topic}}'''. For other uses, see [[{{#var:disambig}}]].<!-- -->|icon=Disambig.svg<!-- -->}}<!-- --></includeonly><!-- --><noinclude>{{doc}}[[Category:Hatnote templates]]</noinclude> c4c62e7a1876492eb970ea182cf4ac0bcad97913 Template:Distinguish 10 106 128 2025-11-02T00:44:07Z ARTIFICER 564804 Importing default loadout wikitext text/x-wiki <includeonly><!-- -->{{#vardefine:text|<!-- start vd -->{{#if:{{{text|}}} | {{{text}}} |<!-- start top if -->{{#if:{{{2|}}}<!-- if more than one page -->|[[{{{1}}}]]{{#if:{{{3|}}}<!-- start concat if -->|, [[{{{2}}}]] or [[{{{3}}}]]<!-- concat two -->|<nowiki> </nowiki>or [[{{{2}}}]]<!-- else; concat one -->}}<!-- end concat if -->|[[{{{1}}}]]<!-- else; one page only -->}}<!-- end custom disambig if -->}}<!-- end if -->}}<!-- end vd -->{{Hatnote|<!-- -->Not to be confused with {{#var:text}}.<!-- -->}}<!-- --></includeonly><!-- --><noinclude>{{doc}}[[Category:Hatnote templates]]</noinclude> 67ae5406ffd29bec56cfe7ad6527bb09a9733496 Template:Distinguish/doc 10 107 129 2025-11-02T00:44:07Z ARTIFICER 564804 Importing default loadout wikitext text/x-wiki <templatedata> { "params": { "1": { "label": "Alternative", "description": "The alternative page.", "example": "Alternative Page", "type": "wiki-page-name", "suggested": true }, "2": { "label": "Second Alternative", "description": "A second alternative page.", "example": "Second Alternative Page", "type": "wiki-page-name" }, "3": { "label": "Third Alternative", "description": "A third alternative page.", "example": "Third Alternative Page", "type": "wiki-page-name" }, "text": { "label": "Alternative Text", "description": "Instead of using pages, you can provide a full alternative text. This parameter overrides other provided parameters.", "example": "the alternative page, [[Alternative Page]]", "type": "line" } }, "description": "This hatnote template is meant to be used to indicate possible alternatives to what the reader wants to find.", "paramOrder": [ "1", "2", "3", "text" ], "format": "inline" } </templatedata> == Examples == {| class="wikitable" ! Code !! Result |- | <code><nowiki>{{Distinguish|Special:Uncategorizedpages}}</nowiki></code> || {{Distinguish|Special:Uncategorizedpages}} |- | <code><nowiki>{{Distinguish|Special:Uncategorizedpages|Special:Uncategorizedfiles}}</nowiki></code> || {{Distinguish|Special:Uncategorizedpages|Special:Uncategorizedfiles}} |- | <code><nowiki>{{Distinguish|Special:Uncategorizedpages|Special:Uncategorizedfiles|Special:Uncategorizedcategories}}</nowiki></code> || {{Distinguish|Special:Uncategorizedpages|Special:Uncategorizedfiles|Special:Uncategorizedcategories}} |- | <code><nowiki>{{Distinguish|Special:Uncategorizedpages{{!}}Page 1}}</nowiki></code> (Custom link label) || {{Distinguish|Special:Uncategorizedpages{{!}}Page 1}} |- | <code><nowiki>{{Distinguish|text = Page 1, another name for [[Special:Uncategorizedpages]]}}</nowiki></code> || {{Distinguish|text = Page 1, another name for [[Special:Uncategorizedpages]]}} |} == Dependencies == For this template to work properly, you need the following: * The {{tl|Hatnote}} base template. * The <code>.hatnote</code> class, found in [[MediaWiki:Common.css]]. == Source == Roughly based on [[wikipedia:Template:Distinguish|Wikipedia's Distinguish Template]]. <noinclude>[[Category:Template documentation]]</noinclude> 2a06ed576ae6479add20834628f9378c657cb4fb Template:For 10 108 130 2025-11-02T00:44:08Z ARTIFICER 564804 Importing default loadout wikitext text/x-wiki <includeonly><!-- -->{{#vardefine:text|<!-- start vd -->{{#if:{{{3|}}}<!-- if more than one page -->|[[{{{2}}}]]{{#if:{{{4|}}}<!-- start concat if -->|, [[{{{3}}}]] and [[{{{4}}}]]<!-- concat two -->|<nowiki> </nowiki>and [[{{{3}}}]]<!-- else; concat one -->}}<!-- end concat if -->|[[{{{2}}}]]<!-- else; one page only -->}}<!-- end if -->}}<!-- end vd -->{{Hatnote|<!-- -->For {{{1}}}, see {{#var:text}}.<!-- -->}}<!-- --></includeonly><!-- --><noinclude>{{doc}}[[Category:Hatnote templates]]</noinclude> 1899e48855153617f7c0bf3087b781bc80f0395c Template:For/doc 10 109 131 2025-11-02T00:44:08Z ARTIFICER 564804 Importing default loadout wikitext text/x-wiki <templatedata> { "params": { "1": { "label": "Topic", "description": "The topic the following pages are about.", "example": "more information", "type": "line", "required": true }, "2": { "label": "Related Page", "description": "A related page.", "example": "Related Page", "type": "wiki-page-name", "required": true }, "3": { "label": "Second Page", "description": "A second related page.", "example": "Second Related Page", "type": "wiki-page-name" }, "4": { "label": "Third Page", "description": "A third related page.", "example": "Third Related Page", "type": "wiki-page-name" } }, "description": "This hatnote template is meant to be used to show pages related to a topic the reader might want to visit.", "paramOrder": [ "1", "2", "3", "4" ], "format": "inline" } </templatedata> == Examples == {| class="wikitable" ! Code !! Result |- | <code><nowiki>{{For|more information|Special:WantedPages}}</nowiki></code> || {{For|more information|Special:WantedPages}} |- | <code><nowiki>{{For|more information|Special:WantedPages|Special:UncategorizedPages}}</nowiki></code> || {{For|more information|Special:WantedPages|Special:UncategorizedPages}} |- | <code><nowiki>{{For|more information|Special:WantedPages|Special:UncategorizedPages|Special:UncategorizedCategories}}</nowiki></code> || {{For|more information|Special:WantedPages|Special:UncategorizedPages|Special:UncategorizedCategories}} |- | <code><nowiki>{{For|more information|Special:WantedPages{{!}}Page 1}}</nowiki></code> (Custom link label) || {{For|more information|Special:WantedPages{{!}}Page 1}} |} == Dependencies == For this template to work properly, you need the following: * The {{tl|Hatnote}} base template. * The <code>.hatnote</code> class, found in [[MediaWiki:Common.css]]. == Source == Roughly based on [[wikipedia:Template:For|Wikipedia's For Template]]. <noinclude>[[Category:Template documentation]]</noinclude> b2a30a9bf8acff259d5e86654a2de69c2d5e4fff Template:Main 10 110 132 2025-11-02T00:44:09Z ARTIFICER 564804 Importing default loadout wikitext text/x-wiki <includeonly><!-- -->{{#vardefine:text|<!-- start vd -->{{#if:{{{2|}}}<!-- if more than one page -->|[[{{{1}}}]]{{#if:{{{3|}}}<!-- start concat if -->|, [[{{{2}}}]] and [[{{{3}}}]]<!-- concat two -->|<nowiki> </nowiki>and [[{{{2}}}]]<!-- else; concat one -->}}<!-- end concat if -->|[[{{{1}}}]]<!-- else; one page only -->}}<!-- end if -->}}<!-- end vd -->{{Hatnote|<!-- -->{{#if:{{{2|}}}|Main articles|Main article}}: {{#var:text}}<!-- -->}}<!-- --></includeonly><!-- --><noinclude>{{doc}}[[Category:Hatnote templates]]</noinclude> e02ac04db1bbce6b71a9aa8a5064182f662d8470 Template:Main/doc 10 111 133 2025-11-02T00:44:09Z ARTIFICER 564804 Importing default loadout wikitext text/x-wiki <templatedata> { "params": { "1": { "label": "Article", "description": "A main article.", "example": "Article", "type": "wiki-page-name", "required": true }, "2": { "label": "Second Article", "description": "A second main article.", "example": "Second Article", "type": "wiki-page-name" }, "3": { "label": "Third Article", "description": "A third main article.", "example": "Third Article", "type": "wiki-page-name" } }, "description": "This hatnote template is meant to be in sections of an article mentioning information about another existing main article.", "paramOrder": [ "1", "2", "3" ], "format": "inline" } </templatedata> == Examples == {| class="wikitable" ! Code !! Result |- | <code><nowiki>{{Main|Special:WantedPages}}</nowiki></code> || {{Main|Special:WantedPages}} |- | <code><nowiki>{{Main|Special:WantedPages#Section Title}}</nowiki></code> || {{Main|Special:WantedPages#Section Title}} |- | <code><nowiki>{{Main|Special:WantedPages|Special:UncategorizedPages}}</nowiki></code> || {{Main|Special:WantedPages|Special:UncategorizedPages}} |- | <code><nowiki>{{Main|Special:WantedPages|Special:UncategorizedPages|Special:UncategorizedCategories}}</nowiki></code> || {{Main|Special:WantedPages|Special:UncategorizedPages|Special:UncategorizedCategories}} |- | <code><nowiki>{{Main|Special:WantedPages{{!}}Page 1}}</nowiki></code> (Custom link label) || {{Main|Special:WantedPages{{!}}Page 1}} |} == Dependencies == This template requires the {{tl|Hatnote}} metatemplate. == Source == Roughly based on [[wikipedia:Template:For|Wikipedia's For Template]]. <noinclude>[[Category:Template documentation]]</noinclude> dd762adeece0f944821cb81ee14a8bd9cb539b22 Template:Ambox/doc 10 112 134 2025-11-02T00:44:09Z ARTIFICER 564804 Importing default loadout wikitext text/x-wiki {{#ifeq:{{ROOTPAGENAME}}|Ambox|"Ambox" is an abbreviation for '''A'''rticle '''m'''essage '''box'''. You can use amboxes in articles to indicate something important about the current page, often in the header.| This '''message template''' is an [[Template:Ambox|article message box]], or '''ambox'''. The documentation below discusses how to use each ambox provided by the wiki. }} == Premade amboxes == === Problem notice amboxes === These amboxes are used temporarily to notify other editors and visitors about a problem with an article. These amboxes support the following parameters: * <code>|tiny=</code>: If set to <code>yes</code>, the box will have less padding and the icon will be much smaller than default. * <code>|class=</code>: Any additional CSS classes to add to the ambox container element. * <code>|date=</code>: The date the ambox was added to the page. * <code>|nocat=</code>: If set to <code>yes</code>, no category will be added to the page. Use this only when creating documentation. '''Note:''' Premade amboxes need the base {{tl|Ambox}} template to work. {| class="wikitable" ! Code !! Result |- | {{tl|Cleanup}} || {{Cleanup|nocat=yes}} |- | {{tl|Delete}} || {{Delete|nocat=yes}} |- | {{tl|Merge|Example}} || {{Merge|Template:Ambox{{!}}Example|nocat=yes}} |- | {{tl|Move|Example}} || {{Move|Template:Ambox{{!}}Example|nocat=yes}} |- | {{tl|Split|Example}}<br/>{{tl|Split|Example 1|Example 2|Example 3}} || {{Split|Template:Ambox{{!}}Example|nocat=yes}} {{Split|Template:Ambox{{!}}Example 1|Template:Ambox{{!}}Example 2|Template:Ambox{{!}}Example 3|nocat=yes}} |- | {{tl|Stub}} || {{Stub|nocat=yes}} |- |} === Informational amboxes === These amboxes are intended as permanent fixtures to a page, to notify visitors about some piece of information relevant to the page. These amboxes support the following parameters in addition to any listed: * <code>|tiny=</code>: If set to <code>yes</code>, the box will have less padding and the icon will be much smaller than default. * <code>|class=</code>: Any additional CSS classes to add to the ambox container element. {| class="wikitable" ! Code !! Additional parameters !! Result |- | {{tl|Spoiler warning}} || || {{Spoiler warning|nocat=yes}} |- | {{tl|No direct use}} || || {{No direct use|nocat=yes}} |- | {{tl|Uses Lua}} || <code><nowiki>|1=</nowiki></code>, a comma-separated list of modules used || {{Uses Lua|nocat=yes}} |} === Optional parameters === You can use optional parameters to further customize a premade ambox. The example below is using <code>tiny=yes</code> and <code>date=01/01/2021</code>. {{Cleanup|tiny=yes|date=01/01/2021|nocat=yes}} == Creating a custom ambox == You can create additional ambox templates as needed using the following parameters: <pre> {{Ambox | color = The left border color. | icon = The icon image to be displayed. | title = The optional title. | message = The explanation text displayed. | tiny = If you want the tiny version of the ambox, fill the parameter with "yes". | date = An optional date of creation for the message. | class = An optional CSS class for the ambox. }} </pre> == Dependencies == For this template to work properly, you need the following: * <code>.ambox</code> and any related classes, found in [[MediaWiki:Common.css]]. <includeonly>[[Category:Notice templates]]</includeonly><noinclude>[[Category:Template documentation]]</noinclude> d4fda481c06177d59ff39364bf17e15d7f1adfbc Template:Cleanup 10 113 135 2025-11-02T00:44:10Z ARTIFICER 564804 Importing default loadout wikitext text/x-wiki <includeonly>{{Ambox | color = gold | icon = Cleanup.svg | message = This page does not meet '''{{SITENAME}}'''<nowiki/>'s page quality standards. You can [{{fullurl:{{FULLPAGENAME}}|action=edit}} edit it] to help fix grammar, formatting, or code issues. | tiny = {{{tiny|}}} | class = {{{class|}}} | date = {{{date|}}} }}<!-- -->{{#ifeq: {{lc:{{{nocat|}}}}} | yes ||[[Category:Pages in need of improvement]]}}</includeonly><!-- --><noinclude>{{Cleanup|nocat=yes}} {{doc|Template:Ambox/doc}}</noinclude> 9c9fb940d733227f74a7ce12720d22f569bd4d3e Template:Delete 10 114 136 2025-11-02T00:44:10Z ARTIFICER 564804 Importing default loadout wikitext text/x-wiki <includeonly>{{Ambox | color = grey | icon = Delete.svg | title = Candidate for Deletion | message = This page lacks relevance for '''{{SITENAME}}''' and is a candidate for '''deletion'''. | tiny = {{{tiny|}}} | class = {{{class|}}} | date = {{{date|}}} }}<!-- -->{{#ifeq: {{lc:{{{nocat|}}}}} | yes ||[[Category:Candidates for deletion]]}}</includeonly><!-- --><noinclude>{{Delete|nocat=yes}} {{doc|Template:Ambox/doc}}</noinclude> 6c827de94518d7f5f1635b13425be0d0fb4078da Template:No direct use 10 115 137 2025-11-02T00:44:10Z ARTIFICER 564804 Importing default loadout wikitext text/x-wiki <includeonly>{{ambox|icon=Warning-red.svg|title=Don't call this template directly from any content page! |message=This template is intended to be used inside of another template. Then that template in turn may be used on content pages. |color=red |tiny={{{tiny|}}} |class={{{class|}}} }}</includeonly><noinclude>{{doc|Template:Ambox/doc}} [[Category:Notice templates]]</noinclude> 22c9c1b0d6c05220eb6d7ad84073f7d878b60b68 Template:UsesLua 10 116 138 2025-11-02T00:44:11Z ARTIFICER 564804 Importing default loadout wikitext text/x-wiki #REDIRECT [[Template:Uses Lua]] 9675a92267565619bc6418ec4e88163985302408 Template:Cleanup/doc 10 117 139 2025-11-02T00:44:11Z ARTIFICER 564804 Importing default loadout wikitext text/x-wiki #REDIRECT [[Template:Ambox/doc]] 286a3914c1d2770ff27394ac3d3f36a685542cb8 Template:Delete/doc 10 118 140 2025-11-02T00:44:11Z ARTIFICER 564804 Importing default loadout wikitext text/x-wiki #REDIRECT [[Template:Ambox/doc]] 286a3914c1d2770ff27394ac3d3f36a685542cb8 Template:Spoiler warning 10 119 141 2025-11-02T00:44:12Z ARTIFICER 564804 Importing default loadout wikitext text/x-wiki {{Ambox | color = red | icon = Warning-red.svg | title = Spoiler Warning | message = This page contains '''spoilers'''. View at your own discretion. | tiny = {{{tiny|}}} | class = {{{class|}}} }}<noinclude>{{doc|Template:Ambox/doc}}</noinclude> d46344bae30adce89ead1cf12e8c3ff904e95203 Template:Spoiler warning/doc 10 120 142 2025-11-02T00:44:13Z ARTIFICER 564804 Importing default loadout wikitext text/x-wiki #REDIRECT [[Template:Ambox/doc]] 286a3914c1d2770ff27394ac3d3f36a685542cb8 Template:Uses Lua/doc 10 121 143 2025-11-02T00:44:13Z ARTIFICER 564804 Importing default loadout wikitext text/x-wiki #REDIRECT [[Template:Ambox/doc]] 286a3914c1d2770ff27394ac3d3f36a685542cb8 Template:Stub 10 122 144 2025-11-02T00:44:14Z ARTIFICER 564804 Importing default loadout wikitext text/x-wiki <includeonly>{{Ambox | color = gold | icon = Stub.svg | message = This page is a [[support:Stub|stub]]. You can help '''{{SITENAME}}''' by [{{fullurl:{{FULLPAGENAME}}|action=edit}} expanding it]. | tiny = {{{tiny|}}} | class = {{{class|}}} | date = {{{date|}}} }}<!-- -->{{#ifeq: {{lc:{{{nocat|}}}}} | yes ||[[Category:Stubs]]}}</includeonly><!-- --><noinclude>{{Stub|nocat=yes}} {{doc|Template:Ambox/doc}}</noinclude> 1effeb7d6eb04a0b11c76b8bfa871703461c9344 Template:Stub/doc 10 123 145 2025-11-02T00:44:14Z ARTIFICER 564804 Importing default loadout wikitext text/x-wiki #redirect [[Template:Ambox/doc]] 68bfb03f8f28c95443c7b1997f252c236bf87256 Template:NoDirectUse 10 124 146 2025-11-02T00:44:14Z ARTIFICER 564804 Importing default loadout wikitext text/x-wiki #REDIRECT [[Template:No direct use]] 8448af1f61f0d64a84806b006c70670d9296acde Template:No direct use/doc 10 125 147 2025-11-02T00:44:14Z ARTIFICER 564804 Importing default loadout wikitext text/x-wiki #redirect [[Template:Ambox/doc]] 68bfb03f8f28c95443c7b1997f252c236bf87256 Template:Merge 10 126 148 2025-11-02T00:44:15Z ARTIFICER 564804 Importing default loadout wikitext text/x-wiki <includeonly>{{Ambox | color = purple | icon = Merge.svg | message = It has been proposed that this page be [[support:Merge|merged]] with [[{{{1}}}]]. | tiny = {{{tiny|}}} | class = {{{class|}}} | date = {{{date|}}} }}<!-- -->{{#ifeq: {{lc:{{{nocat|}}}}} | yes ||[[Category:Candidates for merging]]}}</includeonly><!-- --><noinclude>{{Merge|Template:Merge|nocat=yes}} {{doc|Template:Ambox/doc}}</noinclude> 9975c110e793cc1943eac9ea8e62257d704ab853 Template:Merge/doc 10 127 149 2025-11-02T00:44:15Z ARTIFICER 564804 Importing default loadout wikitext text/x-wiki #REDIRECT [[Template:Ambox/doc]] 286a3914c1d2770ff27394ac3d3f36a685542cb8 Template:Move 10 128 150 2025-11-02T00:44:16Z ARTIFICER 564804 Importing default loadout wikitext text/x-wiki <includeonly>{{Ambox | color = darkorange | icon = Move.svg | message = It has been proposed that this page be moved to [[{{{1}}}]]. | tiny = {{{tiny|}}} | class = {{{class|}}} | date = {{{date|}}} }}<!-- -->{{#ifeq: {{lc:{{{nocat|}}}}} | yes ||[[Category:Candidates for moving]]}}</includeonly><!-- --><noinclude>{{Move|Template:Ambox{{!}}Example|nocat=yes}} {{doc|Template:Ambox/doc}}</noinclude> dc4fd9090208e453457d6d2df193b9a7ee3b562d Template:Move/doc 10 129 151 2025-11-02T00:44:16Z ARTIFICER 564804 Importing default loadout wikitext text/x-wiki #REDIRECT [[Template:Ambox/doc]] 286a3914c1d2770ff27394ac3d3f36a685542cb8 Template:Split 10 130 152 2025-11-02T00:44:16Z ARTIFICER 564804 Importing default loadout wikitext text/x-wiki <includeonly><!-- -->{{#vardefine:pages|<!-- start vd -->{{#if:{{{2|}}}<!-- if more than one page -->|new pages titled [[{{{1}}}]]{{#if:{{{3|}}}<!-- start concat if -->|, [[{{{2}}}]] and [[{{{3}}}]]<!-- concat two -->|<nowiki> </nowiki>and [[{{{2}}}]]<!-- else; concat one -->}}<!-- end concat if -->|a new page titled [[{{{1}}}]]<!-- else; one page only -->}}<!-- end if -->}}<!-- end vd -->{{Ambox | color = purple | icon = Split.svg | message = It has been proposed that this page be split into {{#var:pages}}. | tiny = {{{tiny|}}} | class = {{{class|}}} | date = {{{date|}}} }}<!-- -->{{#ifeq: {{lc:{{{nocat|}}}}} | yes ||[[Category:Candidates for splitting]]}}</includeonly><!-- --><noinclude>{{Split|Template:Ambox{{!}}Example|nocat=yes}} {{Split|Template:Ambox{{!}}Example 1|Template:Ambox{{!}}Example 2|Template:Ambox{{!}}Example 3|nocat=yes}} {{doc|Template:Ambox/doc}}</noinclude> 73f5044c8b972e18c3b7880f94b0644e4a0e6ac7 Template:Split/doc 10 131 153 2025-11-02T00:44:17Z ARTIFICER 564804 Importing default loadout wikitext text/x-wiki #REDIRECT [[Template:Ambox/doc]] 286a3914c1d2770ff27394ac3d3f36a685542cb8 Template:Anchor 10 132 154 2025-11-02T00:44:17Z ARTIFICER 564804 Importing default loadout wikitext text/x-wiki <includeonly><!-- --><span id="{{{1}}}"></span><!-- --></includeonly><!-- --><noinclude>{{doc}} [[Category:Navigation templates]]</noinclude> 08ccba46722925866447768d344bf540b0b55e79 Template:Anchor/doc 10 133 155 2025-11-02T00:44:18Z ARTIFICER 564804 Importing default loadout wikitext text/x-wiki == Summary == This template can be used to insert an invisible anchor (reference points) into a page that can later be used by internal wiki links. == Usage == To create a custom anchor, use <code><nowiki>{{Anchor|Anchor Name}}</nowiki></code> anywhere in the page. For example, if you create the anchor <code><nowiki>{{Anchor|Example Anchor}}</nowiki></code> in the page <code><nowiki>[[Example]]</nowiki></code>, you can access it through the internal link <code><nowiki>[[Example#Example Anchor]]</nowiki></code>. Remember that you can create a [[support:Redirect|redirect]] to this template so that you can call it more easily, such as with <code><nowiki>{{a|Anchor Name}}</nowiki></code>. <noinclude>[[Category:Template documentation]]</noinclude> 4b0ddb50416a354db262e62617d9b45056f4d526 Template:Key/doc/Xbox 10 134 156 2025-11-02T00:44:18Z ARTIFICER 564804 Importing default loadout wikitext text/x-wiki Images source: [[dev:Category:Xbox input images]] === Series & One === <code><nowiki>{{Key|Xbox|A}}</nowiki></code> {{Key|Xbox|A}} <code><nowiki>{{Key|Xbox|B}}</nowiki></code> {{Key|Xbox|B}} <code><nowiki>{{Key|Xbox|X}}</nowiki></code> {{Key|Xbox|X}} <code><nowiki>{{Key|Xbox|Y}}</nowiki></code> {{Key|Xbox|y}} <code><nowiki>{{Key|Xbox|Left Thumbstick}}</nowiki></code> {{Key|Xbox|Left Thumbstick}} <code><nowiki>{{Key|Xbox|Right Thumbstick}}</nowiki></code> {{Key|Xbox|Right Thumbstick}} <code><nowiki>{{Key|Xbox|Left Thumbstick Press}}</nowiki></code> {{Key|Xbox|Left Thumbstick Press}} <code><nowiki>{{Key|Xbox|Right Thumbstick Press}}</nowiki></code> {{Key|Xbox|Right Thumbstick Press}} <code><nowiki>{{Key|Xbox|LB}}</nowiki></code> {{Key|Xbox|LB}} <code><nowiki>{{Key|Xbox|RB}}</nowiki></code> {{Key|Xbox|RB}} <code><nowiki>{{Key|Xbox|View}}</nowiki></code> {{Key|Xbox|View}} <code><nowiki>{{Key|Xbox|Menu}}</nowiki></code> {{Key|Xbox|Menu}} <code><nowiki>{{Key|Xbox|Button}}</nowiki></code> {{Key|Xbox|Button}} === Xbox Series === <code><nowiki>{{Key|Xbox|D-pad}}</nowiki></code> {{Key|Xbox|D-pad}} <code><nowiki>{{Key|Xbox|D-pad Left}}</nowiki></code> {{Key|Xbox|D-pad Left}} <code><nowiki>{{Key|Xbox|D-pad Right}}</nowiki></code> {{Key|Xbox|D-pad Right}} <code><nowiki>{{Key|Xbox|D-pad Up}}</nowiki></code> {{Key|Xbox|D-pad Up}} <code><nowiki>{{Key|Xbox|D-pad Down}}</nowiki></code> {{Key|Xbox|D-pad Down}} <code><nowiki>{{Key|Xbox|LT}}</nowiki></code> {{Key|Xbox|LT}} <code><nowiki>{{Key|Xbox|RT}}</nowiki></code> {{Key|Xbox|RT}} <code><nowiki>{{Key|Xbox|Share}}</nowiki></code> {{Key|Xbox|Share}} ==== Diagram ==== <code><nowiki>{{Key|Xbox|Series Controller Diagram}}</nowiki></code> {{Key|Xbox|Series Controller Diagram}} === Xbox One === <code><nowiki>{{Key|Xbox|One D-pad}}</nowiki></code> {{Key|Xbox|D-pad}} <code><nowiki>{{Key|Xbox|One D-pad Left}}</nowiki></code> {{Key|Xbox|D-pad Left}} <code><nowiki>{{Key|Xbox|One D-pad Right}}</nowiki></code> {{Key|Xbox|D-pad Right}} <code><nowiki>{{Key|Xbox|One D-pad Up}}</nowiki></code> {{Key|Xbox|D-pad Up}} <code><nowiki>{{Key|Xbox|One D-pad Down}}</nowiki></code> {{Key|Xbox|D-pad Down}} <code><nowiki>{{Key|Xbox|One Left Trigger}}</nowiki></code> {{Key|Xbox|One Left Trigger}} <code><nowiki>{{Key|Xbox|One Right Trigger}}</nowiki></code> {{Key|Xbox|One Right Trigger}} ==== Diagram ==== <code><nowiki>{{Key|Xbox|One Controller Diagram}}</nowiki></code> {{Key|Xbox|One Controller Diagram}} __NOTOC__ <noinclude>[[Category:Key template documentation]]</noinclude> adce81e2e9eafcf930052a8993d3e5625665202e Template:Key/doc/DualSense 10 135 157 2025-11-02T00:44:19Z ARTIFICER 564804 Importing default loadout wikitext text/x-wiki Images source: [[dev:Category:DualSense input images]] === Buttons === <code><nowiki>{{Key|PS|Directional}}</nowiki></code> {{Key|PS|Directional}} <code><nowiki>{{Key|PS|Directional Left}}</nowiki></code> {{Key|PS|Directional Left}} <code><nowiki>{{Key|PS|Directional Right}}</nowiki></code> {{Key|PS|Directional Right}} <code><nowiki>{{Key|PS|Directional Up}}</nowiki></code> {{Key|PS|Directional Up}} <code><nowiki>{{Key|PS|Directional Down}}</nowiki></code> {{Key|PS|Directional Down}} <code><nowiki>{{Key|PS|Left Stick}}</nowiki></code> {{Key|PS|Left Stick}} <code><nowiki>{{Key|PS|Right Stick}}</nowiki></code> {{Key|PS|Right Stick}} <code><nowiki>{{Key|PS|Touch Pad}}</nowiki></code> {{Key|PS|Touch Pad}} <code><nowiki>{{Key|PS|Circle}}</nowiki></code> {{Key|PS|Circle}} <code><nowiki>{{Key|PS|Cross}}</nowiki></code> {{Key|PS|Cross}} <code><nowiki>{{Key|PS|Square}}</nowiki></code> {{Key|PS|Square}} <code><nowiki>{{Key|PS|Triangle}}</nowiki></code> {{Key|PS|Triangle}} <code><nowiki>{{Key|PS|Create}}</nowiki></code> {{Key|PS|Create}} <code><nowiki>{{Key|PS|Options}}</nowiki></code> {{Key|PS|Options}} <code><nowiki>{{Key|PS|L1}}</nowiki></code> {{Key|PS|L1}} <code><nowiki>{{Key|PS|R1}}</nowiki></code> {{Key|PS|R1}} <code><nowiki>{{Key|PS|L2}}</nowiki></code> {{Key|PS|L2}} <code><nowiki>{{Key|PS|R2}}</nowiki></code> {{Key|PS|R2}} <code><nowiki>{{Key|PS|L3}}</nowiki></code> {{Key|PS|L3}} <code><nowiki>{{Key|PS|R3}}</nowiki></code> {{Key|PS|R3}} <code><nowiki>{{Key|PS|Mute}}</nowiki></code> {{Key|PS|Mute}} <code><nowiki>{{Key|PS|PS}}</nowiki></code> {{Key|PS|PS}} === Diagram === <code><nowiki>{{Key|PS|Controller Diagram}}</nowiki></code> {{Key|PS|Controller Diagram}} <noinclude>[[Category:Key template documentation]]</noinclude> 84fa5123f9494d3572fef65e1aa63dd95ef476be Template:Gad 10 136 158 2025-11-02T00:44:19Z ARTIFICER 564804 Importing default loadout wikitext text/x-wiki <code>Gadget-[[MediaWiki:Gadget-{{{1}}}|{{{1}}}]]</code><noinclude>[[Category:Formatting templates]]</noinclude> dd027468a6022472506b1fc2973d6299ec01e854 Template:From Wikipedia 10 137 159 2025-11-02T00:44:20Z ARTIFICER 564804 Importing default loadout wikitext text/x-wiki <includeonly>{{Ambox | color = darkblue | icon = Wikipedia.svg | title= This code is adapted from [[wikipedia:Main Page|Wikipedia]]. | message = For the original code, see the following pages: {{#arraymap:{{{1|}}}|,|%s|[[wikipedia:%s|%s]]}} | tiny = {{{tiny|}}} | class = {{{class|}}} }}</includeonly><noinclude>{{doc}}</noinclude> 0bb256ef5acc38fb0cfbdacc22e75aab89bd6e2c Template:!-! 10 138 160 2025-11-02T00:44:20Z ARTIFICER 564804 Importing default loadout wikitext text/x-wiki |-|<noinclude>{{documentation}}</noinclude> c634369c1e88b95ebe6a6d827cb32dc1e9c61fec Template:!-!/doc 10 139 161 2025-11-02T00:44:20Z ARTIFICER 564804 Importing default loadout wikitext text/x-wiki #redirect [[Template:((/doc]] 509bb731d447456a18489848c8a1ce38feddabcc Template:Color 10 140 162 2025-11-02T00:44:21Z ARTIFICER 564804 Importing default loadout wikitext text/x-wiki <includeonly><span class="color">{{{1}}}&nbsp;<span class="color__splotch" style="background-color: {{{1}}};" title="{{{1}}}"></span></span>[[Category:Pages with colors]]</includeonly><noinclude> {{doc}} [[Category:Formatting templates]] </noinclude> 8d576236ad82770d3c04720d4ac105edcb835874 Template:Color/doc 10 141 163 2025-11-02T00:44:21Z ARTIFICER 564804 Importing default loadout wikitext text/x-wiki This template creates a small color splotch with a given background color next to a plaintext color code. This is useful for previewing colors. ==Usage== {{tlx|color|<color>}} Where <code><color></code> is any valid [https://developer.mozilla.org/en-US/docs/Web/CSS/color_value CSS color]. ==Examples== <pre> My favorite color is {{color|darkgreen}} I think the current {{color|#6d8afb}} of links should be changed to a {{color|#6df4fb}} RGB is cool too, you can do {{color|rgb(128,255,128)}}, or even transparency with {{color|rgba(128,255,128,0.5)}}. </pre> Produces: My favorite color is {{color|darkgreen}} I think the current {{color|#6d8afb}} of links should be changed to a {{color|#6df4fb}} RGB is cool too, you can do {{color|rgb(128,255,128)}}, or even transparency with {{color|rgba(128,255,128,0.5)}}. <noinclude>[[Category:Template documentation]]</noinclude> cb66b177cf785e1b3f60e28e36852b253e4b3d82 Template:Example character infobox 10 142 164 2025-11-02T00:44:21Z ARTIFICER 564804 Importing default loadout wikitext text/x-wiki <includeonly>{{#invoke:Infobox|main <!-- See https://support.wiki.gg/wiki/DRUID_infoboxes for extra documentation --> <!-- the "kind" categorizes this type of infobox. For example, you might want to write `Character`, `Level`, or `Item`. --> <!-- This `kind` value should be unique to this template, and no other infobox template should have the same value --> |kind=example-1 <!-- You can almost certainly leave the separator alone, unless one of your *section names* has a comma in it --> |sep=, <!-- feel free to edit the 300px but mostly try to avoid changing this next line unless you are adding tabs --> |image={{#if:{{{image|}}}|[[File:{{{image}}}{{!}}300px]]}} <!-- every infobox needs a |sections= parameter, which lists the groups of sections, in order top to bottom --> |sections=General Info, Stats <!-- for each section, specify the list of fields that you want to show up in that section, top to bottom --> <!-- empty fields (not specified on the content page) will not show up --> |General Info=Region,Element |Stats=Attack, HP, Armor, Attack Speed <!-- this field formats the `Attack Speed` parameter when it's specified by the content page, adding a % sign to the end of it. --> <!-- this is an optional operation to do, only do it if you need to provide some extra formatting --> |Attack Speed={{#if:{{{Attack Speed|}}}|{{{Attack Speed}}}%}} }}<!-- Here is the above code without comments for easier copy-pasting: {{#invoke:Infobox|main |kind=example-1 |sep=, |image={{#if:{{{image|}}}|[[File:{{{image}}}{{!}}300px]]}} |sections=General Info, Stats |General Info=Region,Element |Stats=Attack, HP, Armor, Attack Speed |Attack Speed={{#if:{{{Attack Speed|}}}|{{{Attack Speed}}}%}} }} --></includeonly><noinclude> {{documentation}} [[Category:Infobox templates]]</noinclude> f49d0f82d5a212306ff66b8fee112ecf88123576 Template:Example character infobox/doc 10 143 165 2025-11-02T00:44:22Z ARTIFICER 564804 Importing default loadout wikitext text/x-wiki <noinclude>Are you trying to edit [[Template:Example character infobox]]? If so, you may be in the wrong place - this is the '''documentation page''', not the template itself. To edit the template, please go here: {{fullurl:Template:Example character infobox|action=edit}} </noinclude>This is an example character infobox using the [[support:DRUID infoboxes|DRUID infoboxes]] framework. You can edit it, rename it, or delete it as desired. == Modify this template == To see how DRUID works, please '''edit this page'''! It has several comments explaining the different parts of how to make an infobox. == Copyable code for use on other content pages == If you want to create pages using this infobox, you can use the snippet below. Please understand, this code is for CONTENT PAGES ONLY!! It does not have anything to do with changing what the template supports. <syntaxhighlight lang="wikitext" style="overflow: auto;"> {{Example character infobox |title= |image= |Region= |Element= |Attack= |HP= |Armor= |Attack Speed= }} </syntaxhighlight><noinclude>[[Category:Template documentation]]</noinclude> cc625bd426cde7dbdfa16b8330ff21cd1ef2e942 Template:License/indie.io 10 144 166 2025-11-02T00:44:22Z ARTIFICER 564804 Importing default loadout wikitext text/x-wiki <includeonly>{{License/template | source = {{{source|}}} | type = developer | darkIcon = yes | icon = [[File:IN COPYRIGHT.svg|50px|link=https://rightsstatements.org/page/InC/1.0/?language=en|IN COPYRIGHT]] | text = This file is owned by [https://indie.io indie.io] and/or its licensors, and is licensed under the [https://indie.io indie.io] [https://www.indie.io/terms-of-service Terms of Use].<br/> All trademarks and registered trademarks present in the file are proprietary to [https://indie.io indie.io] and/or its licensors. }}</includeonly><noinclude> This template currently looks like: {{License/indie.io}} See {{tl|License}} for full license documentation [[Category:License templates]]</noinclude> 49823bdf8d378ff755fa7b6493afde40f6a4e19a 167 166 2025-11-02T00:44:22Z ARTIFICER 564804 Protected "[[Template:License/indie.io]]" ([Edit=Allow only wiki.gg staff] (indefinite)) wikitext text/x-wiki <includeonly>{{License/template | source = {{{source|}}} | type = developer | darkIcon = yes | icon = [[File:IN COPYRIGHT.svg|50px|link=https://rightsstatements.org/page/InC/1.0/?language=en|IN COPYRIGHT]] | text = This file is owned by [https://indie.io indie.io] and/or its licensors, and is licensed under the [https://indie.io indie.io] [https://www.indie.io/terms-of-service Terms of Use].<br/> All trademarks and registered trademarks present in the file are proprietary to [https://indie.io indie.io] and/or its licensors. }}</includeonly><noinclude> This template currently looks like: {{License/indie.io}} See {{tl|License}} for full license documentation [[Category:License templates]]</noinclude> 49823bdf8d378ff755fa7b6493afde40f6a4e19a Template:- 10 145 168 2025-11-02T00:44:23Z ARTIFICER 564804 Importing default loadout wikitext text/x-wiki #REDIRECT [[Template:Clear]] 1a2aa4a9ba7478e54a2b21cbce68887ea297ea86 Template:Clear/doc 10 146 169 2025-11-02T00:44:23Z ARTIFICER 564804 Importing default loadout wikitext text/x-wiki This template allows you to [https://developer.mozilla.org/en-US/docs/Web/CSS/clear clear] the left side, the right side, or both by adding <code>&lt;div style="clear:left/right/both;"&gt;&lt;/div&gt;</code> ==Usage== {{tlx|Clear}}: Makes content wait until existing content is completed in all columns. Often used to stop text from flowing next to unrelated images. An optional <code>class</code> parameter can additionally be given for custom functionality. To clear the left, simply put {{tlx|Clear|left}}. To clear the right, put {{tlx|Clear|right}}. To clear both sides, put {{tlx|Clear}}. This template can also be called with {{tlx|-}} for short. <templatedata> { "params": { "1": { "label": "Direction", "description": "Which direction to clear", "type": "string", "default": "both", "suggestedvalues": [ "left", "right", "both" ] }, "class": { "label": "Class", "description": "A class to give to the clear", "type": "string" } }, "description": "Clears the left, right, or both.", "format": "inline" } </templatedata> <noinclude> [[Category:Template documentation]] </noinclude> 30e700cb1ba6902a86860319bd230680193d3b04 Template:Discord 10 147 170 2025-11-02T00:44:24Z ARTIFICER 564804 Importing default loadout wikitext text/x-wiki <includeonly>{{#if:{{{1|{{{id|}}}}}}|<!-- -->{{#ifeq: {{lc:{{{full|}}}<!-- -->}} | yes<!-- display the full widget: -->|<div class="DiscordIntegrator" style="width: {{#or:{{{width|}}}|100%}}; height: {{#or:{{{height|}}}|300px}}" data-id="{{{1|{{{id}}}}}}" data-logged-in="{{{loggedIn}}}" data-theme="{{{theme|}}}" data-width="100%" data-height="100%"><!-- -->If you see this, your JavaScript might be disabled or DiscordIntegrator plugin isn't working. If the latter, please contact a wiki administrator.</div><!-- display only the small widget: -->|<div id="discord-compact-widget" data-id="{{{1|{{{id}}}}}}"></div><!-- -->}}<!-- case: id is not supplied -->|<strong class="error">DiscordIntegrator error: ID of the server isn't supplied.</strong> For instructions on how to find a Discord server ID, see [https://support.discord.com/hc/articles/206346498 this Discord Help Center article]<!-- -->}}</includeonly><!-- -->[[Category:Pages with Discord embeds]]<noinclude>{{Documentation}} [[Category:Templates]]</noinclude> 7d39c3a9d1b4eb8e95becaf418c16ec30cb9c077 Template:Discord/doc 10 148 171 2025-11-02T00:44:24Z ARTIFICER 564804 Importing default loadout wikitext text/x-wiki This template allows you to either use [[support:DiscordCompact|DiscordCompact]] or [[support:DiscordWidget|DiscordWidget]] to display information about a certain Discord server. == Usage == In order to be able to show a Discord server widget on your wiki, first go to your Discord server and do the following: * Open the <code>Server Settings</code>, then go to the <code>Engagement</code> section. * Scroll down to <code>Server Widget</code>. * Enable the widget. * Copy the <code>Server ID</code>. Then, do the following depending on the type of widget you want to use (compact or full). === Compact widget (default) === {{main|support:DiscordCompact{{!}}DiscordCompact}} The compact widget is the default one. To use it, simply add the template with the server ID either as the '''first''' parameter or as the <code>id</code> parameter: * <code><nowiki>{{Discord|serverID}}</nowiki></code> * <code><nowiki>{{Discord|id=serverID}}</nowiki></code> === Full widget === {{main|support:DiscordWidget{{!}}DiscordWidget}} To use the full version of the Discord widget, you have to specify <code>full=yes</code> as one of the template parameters, with the ID either as the '''first''' parameter or as the <code>id</code> parameter: * <code><nowiki>{{Discord|serverID|full=yes}}</nowiki></code> * <code><nowiki>{{Discord|full=yes|id=serverID}}</nowiki></code> You can further customize the widget with the <code>width</code>, <code>height</code> and other parameters. See the Examples section and the full documentation for DiscordWidget on the [[support:DiscordWidget|Support Wiki]]. == Examples == {| class="wikitable" ! Code !! Result |- | <code><nowiki>{{Discord|951501892553424917}}</nowiki></code><br/><code><nowiki>{{Discord|id=951501892553424917}}</nowiki></code> || {{Discord|951501892553424917}} |- | <code><nowiki>{{Discord|951501892553424917}|full=yes}</nowiki></code> || {{Discord|951501892553424917|full=yes}} |- | <pre><nowiki>{{Discord|full=yes |id = 951501892553424917 |width = 300px |height = 500px }}</nowiki></pre> || {{Discord|full=yes|id=951501892553424917|width=300px|height=500px}} |} == Dependencies == * As stated before, both Compact and Widget require the given Discord server to have Widgets enabled in its Server Settings. * Both Compact and Widget require the <code>discordTemplate</code> gadget: ** [[MediaWiki:Gadgets/discordTemplate]] ** [[MediaWiki:Gadgets/discordTemplate/main.js]] == TemplateData == <templatedata> { "params": { "1": { "aliases": [ "id" ], "label": "Server ID", "description": "The Discord server's ID.", "example": "951501892553424917", "type": "line", "required": true }, "full": { "label": "Use full widget", "example": "yes", "type": "boolean", "description": "Do you want to use the full widget?" }, "width": { "label": "Width (full widget only)", "description": "A custom width for the full widget.", "example": "300px", "type": "line" }, "height": { "label": "Height (full widget only)", "description": "A custom height for the full widget.", "example": "500px", "type": "line" } }, "description": "This template allows you to either use DiscordCompact or DiscordWidget to display information about a certain Discord server.", "paramOrder": [ "1", "full", "width", "height" ], "format": "block" } </templatedata> 2b1165b9383a06a5766054d0d38b8b045cf83b25 Template:Main page box/end 10 149 172 2025-11-02T00:44:25Z ARTIFICER 564804 Importing default loadout wikitext text/x-wiki <includeonly></div> </div></includeonly><noinclude> {{doc}} [[Category:Main page templates]] </noinclude> 506617faba565eb65144b21c3ead8fe5c2010b55 Template:Main page box/start 10 150 173 2025-11-02T00:44:25Z ARTIFICER 564804 Importing default loadout wikitext text/x-wiki <includeonly><div class="mp-box <!-- These variables are used to determine if certain layouts should hide certain boxes. The variable is created in and passed from [[Module:Main page]], and is formatted as a pseudo bitmask to reduce variable usage An example of this variable would be "1,1,0," which would mean display on desktop and tablet but not on mobile -->{{#ifeq:{{#explode:{{#var:imp-variable-display-box}}|,|0}}|0|mp-hide-on-desktop}} <!-- -->{{#ifeq:{{#explode:{{#var:imp-variable-display-box}}|,|1}}|0|mp-hide-on-tablet}} <!-- -->{{#ifeq:{{#explode:{{#var:imp-variable-display-box}}|,|2}}|0|mp-hide-on-mobile}} <!-- -->{{{class|}}}" style="grid-area:{{#var:imp-variable-id}}; {{{style|}}}" id="mp-box-{{#var:imp-variable-id}}" data-box-id="{{#var:imp-variable-id}}"><!-- -->{{#if:{{{title|{{{1|}}}}}}| <h2> {{{title|{{{1|}}}}}} </h2> }}<div class="mp-body"></includeonly><noinclude> {{doc}} [[Category:Main page templates]] </noinclude> 62eedb503b63a36fc31a301f8ea6b15f6ff9bf60 Template:Main page box/preload 10 151 174 2025-11-02T00:44:26Z ARTIFICER 564804 Importing default loadout wikitext text/x-wiki {{Main page box/start | title = $1 }} Content goes here, between the start and end templates. Feel free to use wikitext, tables, templates, new lines, whatever. {{Main page box/end}}<includeonly><no<noinclude></noinclude>include>[[Category:Main page boxes]]</no<noinclude></noinclude>include></includeonly><!-- don't edit this line --><noinclude> [[Category:Main page templates]] </noinclude> 9b16288e15e3c8c9ede76b4dc76e538d2253cf23 Template:Main page 10 152 175 2025-11-02T00:44:26Z ARTIFICER 564804 Importing default loadout wikitext text/x-wiki <includeonly>{{#invoke:Main page|main}} __NOTOC__ __NOEDITSECTION__ [[Category:{{SITENAME}}| ]][[Category:Pages using IMP]]</includeonly><noinclude> {{doc}} [[Category:Main page templates]] </noinclude> 63495e8df9d827c4f470a286a50ece24bb2a2e49 Template:Main page box/create 10 153 176 2025-11-02T00:44:26Z ARTIFICER 564804 Importing default loadout wikitext text/x-wiki {{#tag: inputbox | type = create width = 40 default = {{{1|}}} buttonlabel = Create this box prefix = {{#or:{{{rootpage|}}}|{{MediaWiki:Mainpage}}}}/ placeholder = box name (no spaces) preload = Template:Main page box/preload summary = Created using preload preloadparams[] = {{ucfirst:{{{1|Example}}}}} }}<noinclude>[[Category:Main page templates]]</noinclude> da58eca98a44a09e476c5b4a5cafde116b6cdac9 Template:Main page box 10 154 177 2025-11-02T00:44:27Z ARTIFICER 564804 Importing default loadout wikitext text/x-wiki <includeonly><code>Template:Main page box</code> is not intended to be used directly, please use [[Template:Main page box/start]] and [[Template:Main page box/end]].</includeonly><noinclude> This template is used to create the boxes of the IMProved Main Page (IMP) framework. '''It should not be called directly''', instead using {{tl|Main page box/start}} and {{tl|Main page box/end}}. <div style="text-align:center;"> Use the box below to create a page with the required templates already in place, ready for you to add your content. {{/create}} The box name can not contain spaces or start with a number. Those are probably the only restrictions you'll run into, but for a full list see [https://developer.mozilla.org/en-US/docs/Web/CSS/custom-ident <custom-ident> on MDN web docs]. </div> ==Parameters== These are the parameters used by {{tl|Main page box/start}}. All parameters are optional. {| class="wikitable" ! Name !! Data type !! Description |- | title || Wikitext || The title of the box. This can be empty, in which case the box will contain only the content. |- | class || CSS classes || A list of classes to be passed to the box, separated by spaces and without quotes. Standard options are <code>centered-content</code> to vertically center contents, and <code>has-floating-image</code> in case floating images are needed in the box (normally the flex layout disallows this). |- | style || CSS declarations || Inline CSS to be applied directly to the box, without quotes. A common usage is <code>text-align:center;</code> for cases where it's desired for individual boxes to have centered text. |} [[Category:Main page templates]] [[Category:Template documentation]] </noinclude> cbbd25d1eb0105a8be55d0cc174f385fc467ffad Template:Main page box/start/doc 10 155 178 2025-11-02T00:44:27Z ARTIFICER 564804 Importing default loadout wikitext text/x-wiki See [[Template:Main page box]] for information on how to use this. ==TemplateData== <templatedata> { "params": { "class": { "label": "Class", "description": "Additional classes to give to the box wrapping this box.", "example": "centered-content", "suggestedvalues": [ "centered-content", "has-floating-image" ] }, "style": { "label": "Style", "description": "Inline CSS to add to the box wrapping this box", "example": "text-align:center;", "type": "string" }, "title": { "aliases": [ "1" ], "label": "Title", "description": "The title of this box.", "example": "Welcome to the wiki!", "type": "content", "suggested": true } }, "description": "Creates a box for use on the main page.", "paramOrder": [ "title", "class", "style" ], "format": "block" } </templatedata> <noinclude>[[Category:Template documentation]]</noinclude> 860e1be8fbf205ab2b3214cb91860a77fd3ef52b Template:Main page box/end/doc 10 156 179 2025-11-02T00:44:27Z ARTIFICER 564804 Importing default loadout wikitext text/x-wiki See [[Template:Main page box]] for information on how to use this. <noinclude>[[Category:Template documentation]]</noinclude> e73182bed655118b10da971b634dc9c3bf3e3d39 Template:Main page/doc 10 157 180 2025-11-02T00:44:28Z ARTIFICER 564804 Importing default loadout wikitext text/x-wiki {{Uses Lua|Main page}} This template is used to create an IMP Main Page. It uses [[Module:Main page]] to arrange a series of [[Template:Main page box]]es in a [https://developer.mozilla.org/en-US/docs/Web/CSS/CSS_grid_layout CSS grid]. ==Simple explanation== The layout is made using keywords arranged in a grid. This grid has 3 columns on desktop-width screens, 2 columns on tablet, and 1 on mobile. Each can have as many rows as you want. Each keyword represents the same section and can span multiple rows and/or columns, but ''must'' form a contiguous rectangle of any dimension (1x1, 1x2, 2x2, 2x3, etc.). For example, the following input to desktop: <pre style="display:table;"> welcome welcome welcome about links links about contribute contribute </pre> would produce a grid resembling the following: {| class="wikitable" | style="background-color:rgba(0,255,0,0.15)" | welcome | style="background-color:rgba(0,255,0,0.15)" | welcome | style="background-color:rgba(0,255,0,0.15)" | welcome |- | style="background-color:rgba(255,0,255, 0.15)" | about | style="background-color:rgba(0,0,255, 0.15)" | links | style="background-color:rgba(0,0,255, 0.15)" | links |- | style="background-color:rgba(255,0,255, 0.15)" | about | style="background-color:rgba(255,255,0, 0.15)" | contribute | style="background-color:rgba(255,255,0, 0.15)" | contribute |} Where <code>welcome</code> is the contents of [[{{MediaWiki:Mainpage}}/welcome]], <code>about</code> is the contents of [[{{MediaWiki:Mainpage}}/about]], and so on. See [[Template:Main page box]] for more information about creating your own boxes. If you enter a keyword that does not have a corresponding box already, you'll be prompted to create one when saving or previewing the page. If you leave a keyword out of a certain layout, it will not be displayed on that layout. A warning will be given at the top of the edit preview in case this was an accident, but can be safely ignored if intentional. For additional hints and information, see the comments that came on your main page or ask a wiki.gg staff member for help. ==Technical explanation== For the CSS savvy, this section explains how it works a bit under the hood. The input to desktop, tablet, and mobile create [https://developer.mozilla.org/en-US/docs/Web/CSS/Using_CSS_custom_properties CSS variables] which are then used as the value of [https://developer.mozilla.org/en-US/docs/Web/CSS/grid-template-areas grid-template-areas] in media queries for screen widths >=1350px, >=990px, and <990px. The boxes are given an id based on their subpage name, which is then used by the module to find the template, as well as by the box templates to assign them a CSS id of <code>mp-box-<keyword></code>. Since these keywords are used directly in the grid layout, they must follow the rules of [https://developer.mozilla.org/en-US/docs/Web/CSS/custom-ident <custom-ident>] naming. ==Dependencies== For this template to work properly, you need the following: * [[Module:Main page]] * All templates in [[:Category:Main page templates]]. * All CSS within the "Main page layout" section found in [[MediaWiki:Common.css]]. The <code>[[MediaWiki:Gadgets/mpEditLinks|mpEditLinks]]</code> gadget is also highly recommended. Its code can be found at [[MediaWiki:Gadgets/mpEditLinks/main.css]] and [[MediaWiki:Gadgets/mpEditLinks/main.js]]. ==TemplateData== <templatedata> { "params": { "desktop": { "label": "Desktop", "description": "The layout for wide screens", "required": true, "type": "string" }, "tablet": { "label": "Tablet", "description": "The layout for mid-width screens", "required": true, "type": "string" }, "mobile": { "label": "Mobile", "description": "The layout for narrow screens", "required": true, "type": "string" } }, "description": "Creates an IMP Main Page.", "format": "block" } </templatedata> <noinclude>[[Category:Template documentation]]</noinclude> 5dea5039ec2effd7a253aa05fe5acd2c6c81d2ae Template:Ct 10 158 181 2025-11-02T00:44:28Z ARTIFICER 564804 Importing default loadout wikitext text/x-wiki <code><nowiki>[</nowiki>[[Special:CargoTables/{{{1}}}|{{{1}}}]]<nowiki>]</nowiki>{{#if:{{{2|}}}|.{{{2}}}}}</code><noinclude> [[Category:Formatting templates]]</noinclude> d868545d4d3eeb1545e963d063199a68abba7836 Template:Main page box/missing 10 159 182 2025-11-02T00:44:29Z ARTIFICER 564804 Importing default loadout wikitext text/x-wiki {{Main page box/start | title = {{{1}}} | style = text-align:center; | class = missing }} The {{{1}}} box does not exist. Check your spelling or create it here:<br/> {{Main page box/create|{{{1|}}}|rootpage = {{{rootpage|}}}}}<br/> See [[Template:Main page box]] for more information. {{Main page box/end}}<noinclude>[[Category:Main page templates]]</noinclude> 5cff88dacf33c912d4aa04c1541e684a5f3e79bb Template:Iter 10 160 183 2025-11-02T00:44:29Z ARTIFICER 564804 Importing default loadout wikitext text/x-wiki <includeonly>{{#vardefine:varname|ITER_INDEX_{{#if:{{{1|}}}|{{{1}}}|default}}<!-- end vardefine -->}}<!-- main logic -->{{#vardefineecho:{{#var:varname}}| {{#expr: {{#ifeq:{{lc:{{{reset|}}}<!-- end lc -->}} |yes |0 |{{#var:{{#var:varname}}|0}} <!-- end ifeq -->}} + {{#if:{{{get|}}}|0|1}} <!-- end expr -->}} <!-- end vde -->}}</includeonly><noinclude>{{documentation}} [[Category:Templates]]</noinclude> c37a3625d58a115a140f129da248ec1c9f6cb55e Template:Iter/doc 10 161 184 2025-11-02T00:44:29Z ARTIFICER 564804 Importing default loadout wikitext text/x-wiki This template helps you create indexed columns in tables (particularly [[support:Cargo|Cargo]] queries) and to retrieve iterator values when using the parser function <code><nowiki>{{#arraymaptemplate</nowiki></code> (bundled with Extension:ParserPower on wiki.gg). == Simple counting == <pre> * {{iter|}} * {{iter|}} * {{iter|}} * {{iter|}} </pre> * {{iter|}} * {{iter|}} * {{iter|}} * {{iter|}} == Reset the counter == <pre> * {{iter|reset=yes}} * {{iter|}} * {{iter|reset=yes}} * {{iter|}} </pre> * {{iter|reset=yes}} * {{iter|}} * {{iter|reset=yes}} * {{iter|}} == Multiple counters == <pre> * {{iter|key1}} * {{iter|key2}} * {{iter|key2}} * {{iter|key1}} </pre> * {{iter|key1}} * {{iter|key2}} * {{iter|key2}} * {{iter|key1}} == Get value without incrementing == <pre> * {{iter|reset=yes}} * {{iter|}} * {{iter|}} * {{iter|get=yes}} </pre> * {{iter|reset=yes}} * {{iter|}} * {{iter|}} * {{iter|get=yes}} <noinclude> [[Category:Template documentation]] </noinclude> 20b5a53a6457493d2a2a9774b803511678a65760 Template:License/permission 10 162 185 2025-11-02T00:44:29Z ARTIFICER 564804 Importing default loadout wikitext text/x-wiki <includeonly>{{License/template | source = {{{source|}}} | type = permission | icon = [[File:IN COPYRIGHT.svg|50px|link=|IN COPYRIGHT WITH PERMISSION]] | text = This file is copyrighted. The copyright holder has given permission for its use on wiki.gg. }}</includeonly><noinclude> This template currently looks like: {{License/permission}} See {{tl|License}} for full license documentation [[Category:License templates]]</noinclude> 854af75c8477c36c50cb5d103ad8a933892fc322 186 185 2025-11-02T00:44:30Z ARTIFICER 564804 Protected "[[Template:License/permission]]" ([Edit=Allow only administrators] (indefinite) [Rename=Allow only administrators] (indefinite)) wikitext text/x-wiki <includeonly>{{License/template | source = {{{source|}}} | type = permission | icon = [[File:IN COPYRIGHT.svg|50px|link=|IN COPYRIGHT WITH PERMISSION]] | text = This file is copyrighted. The copyright holder has given permission for its use on wiki.gg. }}</includeonly><noinclude> This template currently looks like: {{License/permission}} See {{tl|License}} for full license documentation [[Category:License templates]]</noinclude> 854af75c8477c36c50cb5d103ad8a933892fc322 Template:Flag 10 163 187 2025-11-02T00:44:30Z ARTIFICER 564804 Importing default loadout wikitext text/x-wiki <includeonly><!-- --><span class="country-flag" title="{{{2|}}}">{{#if: {{{1|}}} | [[File:Flag {{{1|}}}.svg|x20px|link=]] | }}</span><!-- --></includeonly><!-- --><noinclude>{{doc}}[[Category:Formatting templates]]</noinclude> 9802f61bee0e36120c835608ccee85e72384341b Template:Flag/doc 10 164 188 2025-11-02T00:44:30Z ARTIFICER 564804 Importing default loadout wikitext text/x-wiki This formatting template allows you to display country flags inline. Available country flags can be seen in [[dev:Category:Country_flags|our Commons Wiki]]. == Usage == The template can be used with the following formatting: <code><nowiki>{{flag|code|Legend}}</nowiki></code>, where: * <code>code</code> is the [[wikipedia:ISO 3166-1 alpha-2|ISO 3166-1 alpha-2]] code for the country flag. * <code>Legend</code> is the legend displayed on hover (optional). == Examples == {| class="wikitable" ! Code !! Result |- | <code><nowiki>{{flag|ca|Canada}}</nowiki></code> || {{flag|ca|Canada}} |} <noinclude>[[Category:Template documentation]]</noinclude> 1fb455be1ffbed259dd27df18dd447e605746ed4 Template:Disambig 10 165 189 2025-11-02T00:44:31Z ARTIFICER 564804 Importing default loadout wikitext text/x-wiki #redirect [[Template:Disambiguation]] f220bcb889e0ce686a839d64ec6c4359b0e8bfb7 Template:TOC limit 10 166 190 2025-11-02T00:44:31Z ARTIFICER 564804 Importing default loadout wikitext text/x-wiki <includeonly><div class="toclimit-{{{1|{{{limit|3}}}}}}">__TOC__</div></includeonly><noinclude> {{documentation}} [[Category:Table of contents templates]] </noinclude> 9187098528659316936c0da0589a7745f10e38e3 Template:TOC limit/doc 10 167 191 2025-11-02T00:44:31Z ARTIFICER 564804 Importing default loadout wikitext text/x-wiki This template inserts a Table of Contents that omits subheadings beyond a certain depth. The table obeys the same layout rules as the <nowiki>__TOC__</nowiki> [[mw:Help:Magic_words|magic word]]. Omitted sections still have section edit links in the article body. The main use for this template is situations where you want section edit links for ease of editing but don't want a full table of contents. '''Before using this template, consider whether and why it would be helpful to readers and other editors.''' == Usage == {{tlx|TOC limit}} or {{tlx|TOC limit|3}} The template defaults to including second- and third-level headings, e.g. those numbered "1" and "1.1" in the TOC. (Note: {{tlx|TOC limit|1}} does nothing: the first-level heading on a page is, by default, the page title.) You can specify a different limit by adding a header level: {{tlx|TOC limit|4}} 4 allows for fourth-level headings, e.g. "1.1.1", but omits any subheadings below that from the TOC. The template works by hiding the lower levels with CSS. See [[Mediawiki:Common.css]]. == TOC levels versus wikitext header levels == The heading levels in the TOC normally correspond to the header levels in the wikitext, so a <code>== Level-2 header ==</code> will normally generate the first-level ("1") TOC headings, a <code>=== Level-3 header ===</code> will normally generate the second-level ("1.1") TOC headings, and so on. This correspondence does ''not'' hold if the page contains <code>= Level-1 headers =</code> or skips header levels. For example, wikitext like this: <pre> == Level-2 heading (A) == === Level-3 heading (B) === == Level-2 heading (C) == ====== Level-6 heading (D) ====== = Level-1 heading (E) = == Level-2 heading (F) == === Level-3 heading (G) === </pre> will generate a TOC like this: {| class="toc" |<div style="text-align:center"><b>Contents</b></div> <ul> <li class="toclevel-1 tocsection-1"><span class="tocnumber">1</span> <span class="toctext">Level-2 heading (A)</span><ul> <li class="toclevel-2 tocsection-2"><span class="tocnumber">1.1</span> <span class="toctext">Level-3 heading (B)</span></li> </ul></li> <li class="toclevel-1 tocsection-1"><span class="tocnumber">2</span> <span class="toctext">Level-2 heading (C)</span><ul> <li class="toclevel-2 tocsection-2"><span class="tocnumber">2.1</span> <span class="toctext">Level-6 heading (D)</span></li> </ul></li> <li class="toclevel-1 tocsection-1"><span class="tocnumber">3</span> <span class="toctext">Level-1 heading (E)</span><ul> <li class="toclevel-2 tocsection-2"><span class="tocnumber">3.1</span> <span class="toctext">Level-2 heading (F)</span><ul> <li class="toclevel-3 tocsection-3"><span class="tocnumber">3.1.1</span> <span class="toctext">Level-3 heading (G)</span></li> </ul></li> </ul></li> </ul> |} Using <code><nowiki>{{TOC limit}}</nowiki></code> on this page ''would not'' hide header D, because even though it is a level-6 heading it is shown at the second level in the TOC. And it ''would'' hide header G even though it is a level-3 heading just like header B, because header G is shown at the third level in the TOC while header B is shown at the second level. == Conflicts == This template does not interact well with the {{tl|TOC right}} template. To achieve the correct effect, use those with a limit parameter. For example, {{tlx|TOC&nbsp;right|2=limit=2}} has the effect that {{tlx|TOC&nbsp;right}} and {{tlx|TOC&nbsp;limit|2}} would have - if they worked together. == TemplateData == <templatedata> { "params": { "1": { "aliases": [ "limit" ], "label": "Limit", "description": "Maximum header depth to be included in table of contents", "default": "3", "suggested": true, "type": "number" } }, "description": "Inserts a Table of Contents that omits subheadings beyond a certain depth." } </templatedata> <noinclude>[[Category:Template documentation]]</noinclude> 8582cad25d72e508a04a81c36ef5ecb663a32bc7 Template:TOC right 10 168 192 2025-11-02T00:44:32Z ARTIFICER 564804 Importing default loadout wikitext text/x-wiki <includeonly><div class="tocright {{#if:{{{limit|}}}|toclimit-{{{limit}}}}}">__TOC__</div></includeonly><noinclude> {{documentation}} [[Category:Table of contents templates]] </noinclude> 8b94caa5343acd906cad9e74465f0ea5ce4e9549 Template:TOC right/doc 10 169 193 2025-11-02T00:44:32Z ARTIFICER 564804 Importing default loadout wikitext text/x-wiki {{tl|TOC right}} forces the auto-generated Table of Contents for an article to appear floated to the right side of the page in order to improve article layout. ==Usage== Insert <code><nowiki>{{TOC right}}</nowiki></code> at the point in the article where you want the top of the Table of Contents box to appear. This should usually be after the text of the lead section, and just before the first section heading. Use with {{tl|clear}} to prevent collision with text. Avoid placing the TOC in a visually poor location. Crossing a section division is probably a poor idea. ;limit : Limits the depth of subheadings shown. For instance using <code>limit=4</code> will hide the fourth level and deeper subheadings in the hierarchy. And <code>limit=2</code> will hide all subheadings leaving only the main headings. This works by hiding the lower levels with CSS. See {{tl|TOC limit}} for more information on this. Do not place this template so that the TOC aligns with a large image or infobox; this breaks the layout on narrow screens (even users with screens as wide as 1024px wide can have problems). Also, a TOC that crosses a section division is probably a poor idea, if that can be avoided. Unless the section in which the {{tl|TOC right}} is placed is long enough, the result may well be undesirable. It should only be used in cases where the TOC gets in the way of other content or is detrimental to the layout of the page; it should ''not'' simply be used for aesthetics since it tampers with the standard appearance of articles. ==TemplateData== <templatedata> { "params": { "limit": { "label": "Limit", "description": "Limits the depth of subheadings shown. For instance using limit=4 will hide the fourth level and deeper subheadings in the hierarchy. And limit=2 will hide all subheadings leaving only the main headings. This works by hiding the lower levels with CSS", "type": "number" } }, "description": "{{TOC right}} forces the auto-generated \"Table of Contents\" for an article to appear floated to the right side of the page (as seen right), in order to improve article layout.", "paramOrder": [ "limit" ], "format": "inline" } </templatedata> <noinclude>[[Category:Template documentation]]</noinclude> 88415e28677a029fbca8963e109305c2d2d79643 Template:Toc limit 10 170 194 2025-11-02T00:44:32Z ARTIFICER 564804 Importing default loadout wikitext text/x-wiki #REDIRECT [[Template:TOC limit]] cfa656c80245fbc1966e109758445db069c69934 Template:Toclimit 10 171 195 2025-11-02T00:44:32Z ARTIFICER 564804 Importing default loadout wikitext text/x-wiki #REDIRECT [[Template:TOC limit]] cfa656c80245fbc1966e109758445db069c69934 Template:Toc right 10 172 196 2025-11-02T00:44:33Z ARTIFICER 564804 Importing default loadout wikitext text/x-wiki #REDIRECT [[Template:TOC right]] fc00258b0a19738ebc9c13dbcc88881f9d5bff3e Template:Tocright 10 173 197 2025-11-02T00:44:33Z ARTIFICER 564804 Importing default loadout wikitext text/x-wiki #REDIRECT [[Template:TOC right]] fc00258b0a19738ebc9c13dbcc88881f9d5bff3e Category:Documentation templates 14 174 198 2025-11-02T00:44:33Z ARTIFICER 564804 Importing default loadout wikitext text/x-wiki [[Category:Templates]] 06eecdec29f6cb215c99cf216d1e3bdc8c30a95e Category:Templates 14 175 199 2025-11-02T00:44:34Z ARTIFICER 564804 Importing default loadout wikitext text/x-wiki [[Category:{{SITENAME}}]] dd8aaa34cf600c1567d240a3f4bc615164a11592 Category:Hardcore Doom Wiki 14 176 200 2025-11-02T00:44:34Z ARTIFICER 564804 Importing default loadout wikitext text/x-wiki This is the top-level category. It contains meta categories and pages about the wiki. 8935f2b3e97edfeadd7bb206f1e17c03099ec24a Category:Notice templates 14 177 201 2025-11-02T00:44:34Z ARTIFICER 564804 Importing default loadout wikitext text/x-wiki [[Category:Templates]] 06eecdec29f6cb215c99cf216d1e3bdc8c30a95e Category:Formatting templates 14 178 202 2025-11-02T00:44:35Z ARTIFICER 564804 Importing default loadout wikitext text/x-wiki [[Category:Templates]] 06eecdec29f6cb215c99cf216d1e3bdc8c30a95e Category:License templates 14 179 203 2025-11-02T00:44:35Z ARTIFICER 564804 Importing default loadout wikitext text/x-wiki [[Category:Templates]] 06eecdec29f6cb215c99cf216d1e3bdc8c30a95e Category:Pages using DynamicPageList3 parser function 14 180 204 2025-11-02T00:44:35Z ARTIFICER 564804 Importing default loadout wikitext text/x-wiki __HIDDENCAT__ __EXPECTUNUSEDCATEGORY__ [[Category:Wiki maintenance]] d17f98d5d77b5951b7a80755914239533ad6aba6 Category:Candidates for deletion 14 181 205 2025-11-02T00:44:35Z ARTIFICER 564804 Importing default loadout wikitext text/x-wiki __EXPECTUNUSEDCATEGORY__ [[Category:Wiki maintenance]] 786037995b8f7e89762a8ea13b84ade091453c00 Category:Hidden categories 14 182 206 2025-11-02T00:44:36Z ARTIFICER 564804 Importing default loadout wikitext text/x-wiki These categories are hidden on article pages by using the <code><nowiki>__HIDDENCAT__</nowiki></code> [[mw:Help:Magic_words|magic word]]. [[Category:Wiki maintenance]] b5f9c4dde8b4f1b32821661c1886db1f5afdeeaf Category:Images 14 183 207 2025-11-02T00:44:36Z ARTIFICER 564804 Importing default loadout wikitext text/x-wiki [[Category:Media]] b141d2b9971d6efe9f59bd03449781e71411c631 Category:Infobox templates 14 184 208 2025-11-02T00:44:36Z ARTIFICER 564804 Importing default loadout wikitext text/x-wiki [[Category:Templates]] 06eecdec29f6cb215c99cf216d1e3bdc8c30a95e Category:Logos 14 185 209 2025-11-02T00:44:37Z ARTIFICER 564804 Importing default loadout wikitext text/x-wiki [[Category:Images]] 8820b63e35aedd9d2666fe40b965d4e91ce0a106 Category:Media 14 186 210 2025-11-02T00:44:37Z ARTIFICER 564804 Importing default loadout wikitext text/x-wiki [[Category:{{SITENAME}}]] dd8aaa34cf600c1567d240a3f4bc615164a11592 Category:Pages containing omitted template arguments 14 187 211 2025-11-02T00:44:37Z ARTIFICER 564804 Importing default loadout wikitext text/x-wiki __EXPECTUNUSEDCATEGORY__ [[Category:Wiki maintenance]] 786037995b8f7e89762a8ea13b84ade091453c00 Category:Pages using TabberTransclude parser tag 14 188 212 2025-11-02T00:44:38Z ARTIFICER 564804 Importing default loadout wikitext text/x-wiki __HIDDENCAT__ __EXPECTUNUSEDCATEGORY__ [[Category:Wiki maintenance]] d17f98d5d77b5951b7a80755914239533ad6aba6 Category:Pages using Tabber parser tag 14 189 213 2025-11-02T00:44:38Z ARTIFICER 564804 Importing default loadout wikitext text/x-wiki __HIDDENCAT__ __EXPECTUNUSEDCATEGORY__ [[Category:Wiki maintenance]] d17f98d5d77b5951b7a80755914239533ad6aba6 Category:Pages using duplicate arguments in template calls 14 190 214 2025-11-02T00:44:39Z ARTIFICER 564804 Importing default loadout wikitext text/x-wiki __EXPECTUNUSEDCATEGORY__ [[Category:Wiki maintenance]] 786037995b8f7e89762a8ea13b84ade091453c00 Category:Pages where expansion depth is exceeded 14 191 215 2025-11-02T00:44:39Z ARTIFICER 564804 Importing default loadout wikitext text/x-wiki __EXPECTUNUSEDCATEGORY__ [[Category:Wiki maintenance]] 786037995b8f7e89762a8ea13b84ade091453c00 Category:Pages where template include size is exceeded 14 192 216 2025-11-02T00:44:39Z ARTIFICER 564804 Importing default loadout wikitext text/x-wiki __EXPECTUNUSEDCATEGORY__ [[Category:Wiki maintenance]] 786037995b8f7e89762a8ea13b84ade091453c00 Category:Pages where the unstrip depth limit is exceeded 14 193 217 2025-11-02T00:44:40Z ARTIFICER 564804 Importing default loadout wikitext text/x-wiki __EXPECTUNUSEDCATEGORY__ [[Category:Wiki maintenance]] 786037995b8f7e89762a8ea13b84ade091453c00 Category:Pages where the unstrip size limit is exceeded 14 194 218 2025-11-02T00:44:40Z ARTIFICER 564804 Importing default loadout wikitext text/x-wiki __EXPECTUNUSEDCATEGORY__ [[Category:Wiki maintenance]] 786037995b8f7e89762a8ea13b84ade091453c00 Category:Pages with broken file links 14 195 219 2025-11-02T00:44:40Z ARTIFICER 564804 Importing default loadout wikitext text/x-wiki [[Category:Wiki maintenance]] 197b5fc8ebad5537759adacc0079b4b2662cb4c4 Category:Pages with ignored display titles 14 196 220 2025-11-02T00:44:40Z ARTIFICER 564804 Importing default loadout wikitext text/x-wiki __EXPECTUNUSEDCATEGORY__ [[Category:Wiki maintenance]] 786037995b8f7e89762a8ea13b84ade091453c00 Category:Pages with math errors 14 197 221 2025-11-02T00:44:41Z ARTIFICER 564804 Importing default loadout wikitext text/x-wiki __EXPECTUNUSEDCATEGORY__ [[Category:Wiki maintenance]] 786037995b8f7e89762a8ea13b84ade091453c00 Category:Pages with non-numeric formatnum arguments 14 198 222 2025-11-02T00:44:41Z ARTIFICER 564804 Importing default loadout wikitext text/x-wiki __EXPECTUNUSEDCATEGORY__ [[Category:Wiki maintenance]] 786037995b8f7e89762a8ea13b84ade091453c00 Category:Pages with reference errors 14 199 223 2025-11-02T00:44:41Z ARTIFICER 564804 Importing default loadout wikitext text/x-wiki __EXPECTUNUSEDCATEGORY__ [[Category:Wiki maintenance]] 786037995b8f7e89762a8ea13b84ade091453c00 Category:Pages with script errors 14 200 224 2025-11-02T00:44:41Z ARTIFICER 564804 Importing default loadout wikitext text/x-wiki __EXPECTUNUSEDCATEGORY__ [[Category:Wiki maintenance]] 786037995b8f7e89762a8ea13b84ade091453c00 Category:Pages with syntax highlighting errors 14 201 225 2025-11-02T00:44:42Z ARTIFICER 564804 Importing default loadout wikitext text/x-wiki __EXPECTUNUSEDCATEGORY__ [[Category:Wiki maintenance]] 786037995b8f7e89762a8ea13b84ade091453c00 Category:Pages with template loops 14 202 226 2025-11-02T00:44:42Z ARTIFICER 564804 Importing default loadout wikitext text/x-wiki __EXPECTUNUSEDCATEGORY__ [[Category:Wiki maintenance]] 786037995b8f7e89762a8ea13b84ade091453c00 Category:Pages with too many expensive parser function calls 14 203 227 2025-11-02T00:44:42Z ARTIFICER 564804 Importing default loadout wikitext text/x-wiki __EXPECTUNUSEDCATEGORY__ [[Category:Wiki maintenance]] 786037995b8f7e89762a8ea13b84ade091453c00 Category:Promotional images 14 204 228 2025-11-02T00:44:43Z ARTIFICER 564804 Importing default loadout wikitext text/x-wiki Official images used for purposes of promoting the game, that may not actually represent gameplay. [[Category:Images]] 80b893c439747ce681cf18cc579c3bc4c65cd502 Category:Stubs 14 205 229 2025-11-02T00:44:43Z ARTIFICER 564804 Importing default loadout wikitext text/x-wiki __EXPECTUNUSEDCATEGORY__ [[Category:Wiki maintenance]] 786037995b8f7e89762a8ea13b84ade091453c00 Category:Template documentation 14 206 230 2025-11-02T00:44:43Z ARTIFICER 564804 Importing default loadout wikitext text/x-wiki [[Category:Templates]] [[Category:Wiki maintenance]] c1800be0da4588b3b652fa5324aade2c496fb3c5 Category:Templates with no documentation 14 207 231 2025-11-02T00:44:43Z ARTIFICER 564804 Importing default loadout wikitext text/x-wiki __EXPECTUNUSEDCATEGORY__ [[Category:Templates]] [[Category:Wiki maintenance]] b1ff76c0593194e53e6bf42f37ca337a5493c57e Category:Wiki maintenance 14 208 232 2025-11-02T00:44:44Z ARTIFICER 564804 Importing default loadout wikitext text/x-wiki The sub-categories of this category contain pages that have been identified as needing attention for one or more of the following reasons: * Changes have been suggested that should be discussed first or are under discussion. * The page has flaws that need addressing by an editor with the knowledge or skills to help. * The action the page needs requires special rights. ''See also:'' * [[Special:BrokenRedirects|Broken redirects]] * [[Special:DoubleRedirects|Double redirects]] * [[Special:UncategorizedCategories|Uncategorized categories]] * [[Special:UncategorizedFiles|Uncategorized files]] * [[Special:UncategorizedPages|Uncategorized pages]] * [[Special:UncategorizedTemplates|Uncategorized templates]] * [[Special:WantedCategories|Wanted categories]] * [[Special:WantedFiles|Wanted files]] * [[Special:WantedPages|Wanted pages]] * [[Special:WantedTemplates|Wanted templates]] * [[Special:TrackingCategories|Other special tracking categories]] [[Category:{{SITENAME}}]] 4b90dc0dbd8c91e131e4ffcf22360b1c837b9717 Category:Wiki skin images 14 209 233 2025-11-02T00:44:44Z ARTIFICER 564804 Importing default loadout wikitext text/x-wiki [[Category:Images]] 8820b63e35aedd9d2666fe40b965d4e91ce0a106 Category:Pages using DynamicPageList3 dplvar parser function 14 210 234 2025-11-02T00:44:45Z ARTIFICER 564804 Importing default loadout wikitext text/x-wiki __HIDDENCAT__ __EXPECTUNUSEDCATEGORY__ [[Category:Wiki maintenance]] d17f98d5d77b5951b7a80755914239533ad6aba6 Category:Pages including data maps failing validation 14 211 235 2025-11-02T00:44:45Z ARTIFICER 564804 Importing default loadout wikitext text/x-wiki __EXPECTUNUSEDCATEGORY__ __HIDDENCAT__ [[Category:Wiki maintenance]] 57e36e9878c3eb806aa6ee6f748a5c5e0cdd5a97 Category:Pages including data maps 14 212 236 2025-11-02T00:44:45Z ARTIFICER 564804 Importing default loadout wikitext text/x-wiki __HIDDENCAT__ __EXPECTUNUSEDCATEGORY__ [[Category:Wiki maintenance]] d17f98d5d77b5951b7a80755914239533ad6aba6 Category:Maps failing data validation 14 213 237 2025-11-02T00:44:46Z ARTIFICER 564804 Importing default loadout wikitext text/x-wiki __EXPECTUNUSEDCATEGORY__ __HIDDENCAT__ [[Category:Wiki maintenance]] 57e36e9878c3eb806aa6ee6f748a5c5e0cdd5a97 Category:Legal notices 14 214 238 2025-11-02T00:44:46Z ARTIFICER 564804 Importing default loadout wikitext text/x-wiki [[Category:{{SITENAME}}]] dd8aaa34cf600c1567d240a3f4bc615164a11592 Category:Pages setting LuaCache keys 14 215 239 2025-11-02T00:44:46Z ARTIFICER 564804 Importing default loadout wikitext text/x-wiki __EXPECTUNUSEDCATEGORY__ __HIDDENCAT__ [[Category:Wiki maintenance]] 57e36e9878c3eb806aa6ee6f748a5c5e0cdd5a97 Category:Hatnote templates 14 216 240 2025-11-02T00:44:47Z ARTIFICER 564804 Importing default loadout wikitext text/x-wiki [[Category:Templates]] 06eecdec29f6cb215c99cf216d1e3bdc8c30a95e Category:Key template documentation 14 217 241 2025-11-02T00:44:47Z ARTIFICER 564804 Importing default loadout wikitext text/x-wiki [[Category:Template documentation]] e65ecf60878d4707b3b4c1e3962615e2d5f3b2ab Category:Navigation templates 14 218 242 2025-11-02T00:44:47Z ARTIFICER 564804 Importing default loadout wikitext text/x-wiki [[Category:Templates]] 06eecdec29f6cb215c99cf216d1e3bdc8c30a95e Category:Pages with failing Cargo queries 14 219 243 2025-11-02T00:44:48Z ARTIFICER 564804 Importing default loadout wikitext text/x-wiki __EXPECTUNUSEDCATEGORY__ [[Category:Wiki maintenance]] 786037995b8f7e89762a8ea13b84ade091453c00 Category:Pages with math render errors 14 220 244 2025-11-02T00:44:48Z ARTIFICER 564804 Importing default loadout wikitext text/x-wiki __EXPECTUNUSEDCATEGORY__ [[Category:Wiki maintenance]] 786037995b8f7e89762a8ea13b84ade091453c00 Category:Pages with DRUID infoboxes 14 221 245 2025-11-02T00:44:49Z ARTIFICER 564804 Importing default loadout wikitext text/x-wiki This category contains every page with a DRUID infobox. It can be used for maintenance but primarily exists to enable the use of gadgets for targeted CSS and JS. __HIDDENCAT__ __EXPECTUNUSEDCATEGORY__ [[Category:Categories for loading gadgets]] 17ed4520e5c453209616df3c9b2306fce8ceb12f Category:Pages with navboxes 14 222 246 2025-11-02T00:44:49Z ARTIFICER 564804 Importing default loadout wikitext text/x-wiki This category contains every page with a {{tl|navbox}}. It can be used for maintenance but primarily exists to enable the use of gadgets for targeted CSS and JS. __HIDDENCAT__ __EXPECTUNUSEDCATEGORY__ [[Category:Categories for loading gadgets]] 3e48f396fafee5d8aecf6cd0dcb554c769f485a9 Category:Pages with amboxes 14 223 247 2025-11-02T00:44:49Z ARTIFICER 564804 Importing default loadout wikitext text/x-wiki This category contains every page with an {{tl|ambox}}. It can be used for maintenance but primarily exists to enable the use of gadgets for targeted CSS and JS. __HIDDENCAT__ __EXPECTUNUSEDCATEGORY__ [[Category:Categories for loading gadgets]] de382f794395f344d0147dbb96b9542d6f38f624 Category:Pages with hatnotes 14 224 248 2025-11-02T00:44:50Z ARTIFICER 564804 Importing default loadout wikitext text/x-wiki This category contains every page with a {{tl|hatnote}}. It can be used for maintenance but primarily exists to enable the use of gadgets for targeted CSS and JS. __HIDDENCAT__ __EXPECTUNUSEDCATEGORY__ [[Category:Categories for loading gadgets]] 4ac7721cfcffb2f181820164d95f3af8d86c4fd7 Category:Pages with spoilers 14 225 249 2025-11-02T00:44:50Z ARTIFICER 564804 Importing default loadout wikitext text/x-wiki This category contains every page with a {{tl|spoiler}}. It can be used for maintenance but primarily exists to enable the use of gadgets for targeted CSS and JS. __HIDDENCAT__ __EXPECTUNUSEDCATEGORY__ [[Category:Categories for loading gadgets]] 5822aa87e8a8897673ff589d00d2f0d622aa3be5 Category:Pages with quotes 14 226 250 2025-11-02T00:44:51Z ARTIFICER 564804 Importing default loadout wikitext text/x-wiki This category contains every page with a {{tl|quote}}. It can be used for maintenance but primarily exists to enable the use of gadgets for targeted CSS and JS. __HIDDENCAT__ __EXPECTUNUSEDCATEGORY__ [[Category:Categories for loading gadgets]] 2f764cddd1fb264f48b896ffd6e892df3c391e90 Category:Pages with colors 14 227 251 2025-11-02T00:44:51Z ARTIFICER 564804 Importing default loadout wikitext text/x-wiki This category contains every page with a {{tl|color}}. It can be used for maintenance but primarily exists to enable the use of gadgets for targeted CSS and JS. __HIDDENCAT__ __EXPECTUNUSEDCATEGORY__ [[Category:Categories for loading gadgets]] bcca0312385263c30522c744df6a8c8856c68fab Category:Main page templates 14 228 252 2025-11-02T00:44:51Z ARTIFICER 564804 Importing default loadout wikitext text/x-wiki [[Category:Templates]] 06eecdec29f6cb215c99cf216d1e3bdc8c30a95e Category:Main page boxes 14 229 253 2025-11-02T00:44:52Z ARTIFICER 564804 Importing default loadout wikitext text/x-wiki [[Category:Main page templates]] ce086f8cfa39aeb8137ffe34e5d41aa38300cf4e Category:Pages using the RSS extension 14 230 254 2025-11-02T00:44:52Z ARTIFICER 564804 Importing default loadout wikitext text/x-wiki __HIDDENCAT__ __EXPECTUNUSEDCATEGORY__ [[Category:Wiki maintenance]] d17f98d5d77b5951b7a80755914239533ad6aba6 Category:Pages with Discord embeds 14 231 255 2025-11-02T00:44:52Z ARTIFICER 564804 Importing default loadout wikitext text/x-wiki This category contains every page with a {{tl|Discord}} embed. It can be used for maintenance but primarily exists to enable the use of gadgets for targeted CSS and JS. __HIDDENCAT__ __EXPECTUNUSEDCATEGORY__ [[Category:Categories for loading gadgets]] 11ff5616854d8913d2c371ae3c2c610278651846 Category:Categories for loading gadgets 14 232 256 2025-11-02T00:44:53Z ARTIFICER 564804 Importing default loadout wikitext text/x-wiki [[Category:Wiki maintenance]] 197b5fc8ebad5537759adacc0079b4b2662cb4c4 Category:Table of contents templates 14 233 257 2025-11-02T00:44:53Z ARTIFICER 564804 Importing default loadout wikitext text/x-wiki [[Category:Templates]] 06eecdec29f6cb215c99cf216d1e3bdc8c30a95e Category:Pages using IMP 14 234 258 2025-11-02T00:44:53Z ARTIFICER 564804 Importing default loadout wikitext text/x-wiki This category lists all pages that are using [[Template:Main page]]. This category is used by [[Mediawiki:Gadgets/mpEditLinks]] to only load the JS on relevant pages. __HIDDENCAT__ [[Category:Categories for loading gadgets]] 9c8aa4509bbc2f2e7d56f8bc1bfebd828d20d914 Category:Escaped character templates 14 235 259 2025-11-02T00:44:54Z ARTIFICER 564804 Importing default loadout wikitext text/x-wiki [[Category:Formatting templates]] b0977d99bfd84d652e4508b3691eb776cf54a6dd Category:Pages using EmbedVideo 14 236 260 2025-11-02T00:44:54Z ARTIFICER 564804 Importing default loadout wikitext text/x-wiki __HIDDENCAT__ __EXPECTUNUSEDCATEGORY__ [[Category:Wiki maintenance]] d17f98d5d77b5951b7a80755914239533ad6aba6 Category:Pages with EmbedVideo errors 14 237 261 2025-11-02T00:44:55Z ARTIFICER 564804 Importing default loadout wikitext text/x-wiki __HIDDENCAT__ __EXPECTUNUSEDCATEGORY__ [[Category:Wiki maintenance]] d17f98d5d77b5951b7a80755914239533ad6aba6 MediaWiki:Vector.css 8 238 262 2025-11-02T00:44:55Z ARTIFICER 564804 Importing default loadout css text/css /* All CSS here will be loaded for users of the Vector skin */ /* This is the wiki.gg default loadout, please do not modify it inline. To add your own skin customizations, scroll down to the end of the default loadout (or search for "[END]" to jump there). If you modify the sheet above that point, your changes may be overwritten in updates without warning!!! If you want to maintain your own CSS for annual MediaWiki updates & be responsible for ALL bugfixes YOURSELF, change UPDATE in the following line to say NOUPDATE: DLW: UPDATE DLW VERSION: 2.2.3.5 IMPORTANT: if you are updating your wiki from a version before May 22, 2025, you need to copy [[MediaWiki:Gadgets/vectorScripts]] and [[MediaWiki:Gadgets/vectorScripts/main.js]] as well or your navigation tabs will break. */ /********************************************************* * Backwards compatibility with deprecated variable names * **********************************************************/ :root { --wiki-heading-color: var(--wiki-content-heading-color); --wiki-heading-font-family: var(--wiki-content-heading-font-family); --wiki-firstheading-font-family: var(--wiki-content-firstheading-font-family); } /**************************************** * End backwards compatibility variables * *****************************************/ /************************************ * Body, head, and general framework * *************************************/ :root{ --wiki-logo-box-width: calc(var(--wiki-sidebar-width, 10em) * (1 - var(--wiki-is-top-logo, 0)) + min( var(--wiki-logo-file-width, 160) / var(--wiki-logo-file-height, 160) * var(--wiki-logo-height, 160px), 100vw - var(--wiki-left-spacing, 0.5em) - var(--wiki-right-spacing, 0px) - 18px, var(--wiki-page-content-max-width, 9999px) ) * var(--wiki-is-top-logo, 0)); /* 18px: the scrollbar */ --wiki-logo-box-height: calc(var(--wiki-logo-file-height, 160) / var(--wiki-logo-file-width, 160) * var(--wiki-logo-box-width)); } html, body { height: auto; min-height: 100%; } /* site background */ html { background-color: var(--wiki-body-background-color); background-image: var(--wiki-body-background-image); /* the following have fallbacks for backwards compatibility with older versions of the loadout */ background-position: var(--wiki-body-background-position, top center); background-size: var(--wiki-body-background-size, cover); background-repeat: var(--wiki-body-background-repeat, no-repeat); background-attachment: var(--wiki-body-background-attachment, fixed); } body { background: none; font-family: var(--wiki-body-font-family); accent-color: var(--wiki-accent-color); padding-top: calc(var(--wikigg-header-height) + var(--wiki-top-spacing, 0px)); padding-bottom: var(--wiki-bottom-spacing, 0px); padding-left: var(--wiki-left-spacing, 0px); padding-right: var(--wiki-right-spacing, 0px); box-sizing: border-box; } .skinpref-limited-width body, body.skinpref-limited-width { --wiki-page-content-max-width: var(--wiki-content-reduced-max-width, 1300px); } /* clear fix */ body::after { content: ""; display: table; clear: both; } .vector-body{ z-index:1; /* base z-index for popups. */ } #mw-page-base, #mw-head-base { background: none; --height: calc(var(--wiki-navigation-height, 3em) + var(--wiki-content-border-width, 1px) * var(--wiki-is-navigation-inside-content, 0) + var(--wiki-is-top-logo, 0) * (var(--wiki-logo-box-height, 160px) + var(--wiki-logo-margin, 15px))); /* if not is-top-logo, height of navigation, else height of navigation + logo-height + logo-margin */ height: var(--height); } #mw-page-base { max-width: var(--wiki-page-content-max-width, 9999px); margin: auto; } #mw-head-base { width: calc(min(100%, var(--wiki-page-content-max-width, 9999px)) - var(--wiki-sidebar-width, 10em) - var(--wiki-gap-between-sidebar-and-content, 0.5em)); margin-top: calc(-1 * var(--height)); margin-left: calc(max(0px, 100% - var(--wiki-page-content-max-width, 9999px)) / 2 + var(--wiki-sidebar-width, 10em) + var(--wiki-gap-between-sidebar-and-content, 0.5em)); } /* let ul default to text that respects color */ ul { list-style-image: none; } /************************ * End general framework * *************************/ /************** * Vector tabs * ***************/ /* prevent margin collapse */ .content-wrapper::before { content: " "; display: table; } .content-wrapper{ --navigation-border-bottom-width: calc(var(--wiki-navigation-border-bottom-width, calc(var(--wiki-is-navigation-inside-content, 0) * var(--wiki-navigation-selected-border-width, 1px) + (1 - var(--wiki-is-navigation-inside-content, 0)) * var(--wiki-content-border-width, 1px)))); } /****** navbar (#mw-head) ******/ .vector-menu-tabs .mw-list-item, #p-cactions, #p-variants { float: unset; line-height: 1.5; /* fallback */ line-height: round(nearest, calc(var(--wiki-navigation-font-size,0.8125em)*1.5), 1px); box-sizing: border-box; white-space: nowrap; } #mw-head { --icon-star-filled: url("data:image/svg+xml,%3C%3Fxml version='1.0'%3F%3E%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 32 32' id='Outlined'%3E%3Cg style='fill:%23000000;fill-opacity:1' id='Fill'%3E%3Cpath style='fill:%23000000;fill-opacity:1' id='path1380' d='M 28.61,11.67 H 20 L 17.34,3.47 C 16.920093,2.1973942 15.119907,2.1973942 14.7,3.47 L 12,11.67 H 3.39 c -1.3409796,0.0031 -1.900508,1.71581 -0.82,2.51 l 7,5.07 -2.68,8.21 C 6.5980433,28.35747 7.2662365,29.278767 8.21,29.28 8.4953889,29.267666 8.7705436,29.170143 9,29 l 7,-5.07 7,5.07 c 0.236205,0.170386 0.518805,0.264586 0.81,0.27 0.943763,-0.0012 1.611957,-0.92253 1.32,-1.82 l -2.66,-8.21 7,-5.07 c 1.075277,-0.810084 0.486081,-2.522863 -0.86,-2.5 z' /%3E%3C/g%3E%3C/svg%3E"); --icon-star-empty: url("data:image/svg+xml,%3C%3Fxml version='1.0' encoding='UTF-8'%3F%3E%3Csvg xmlns='http://www.w3.org/2000/svg' width='20' height='20' viewBox='0 0 20 20'%3E%3Cpath d='M20 7h-7L10 .5 7 7H0l5.46 5.47-1.64 7 6.18-3.7 6.18 3.73-1.63-7zm-10 6.9-3.76 2.27 1-4.28L3.5 8.5h4.61L10 4.6l1.9 3.9h4.6l-3.73 3.4 1 4.28z'/%3E%3C/svg%3E%0A"); /* icon below is from https://tabler-icons.io/ */ --icon-chevron-down: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' class='icon icon-tabler icon-tabler-chevron-down' width='24' height='24' viewBox='0 0 24 24' stroke-width='2' stroke='currentColor' fill='none' stroke-linecap='round' stroke-linejoin='round'%3E%3Cpath stroke='none' d='M0 0h24v24H0z' fill='none'%3E%3C/path%3E%3Cpath d='M6 9l6 6l6 -6'%3E%3C/path%3E%3C/svg%3E"); margin-left: calc(var(--wiki-sidebar-width, 10em) + var(--wiki-gap-between-sidebar-and-content, 0.5em)); width: auto; height: var(--wiki-navigation-height); margin-top: calc(-1 * (var(--wiki-navigation-height) + var(--wiki-content-border-width, 1px) * var(--wiki-is-navigation-inside-content, 0))); position: relative; display: flex; align-items: stretch; z-index: 4; /* above #mw-panel and .mw-indicators */ background: var(--wiki-navigation-box-background, none); border: calc(var(--wiki-content-border-width, 1px) * var(--wiki-is-navigation-inside-content, 0)) var(--wiki-content-border-style, solid) var(--wiki-content-border-color); border-bottom-width: 0; border-radius: var(--wiki-content-border-top-radius, var(--wiki-content-border-radius, 0px)) var(--wiki-content-border-top-radius, var(--wiki-content-border-radius, 0px)) 0 0; border-image: var(--wiki-navigation-box-border-image, none); backdrop-filter: var(--wiki-navigation-box-backdrop-filter, none); } /* top border of the content */ #mw-head::before { content: ""; display: block; box-sizing: border-box; position: absolute; top: calc(100% - min(var(--wiki-navigation-left-spacing, 0px) * 999, var(--navigation-border-bottom-width)) + var(--navigation-border-bottom-width)); left: 0; width: calc(max(var(--wiki-navigation-left-spacing, 0px), var(--navigation-border-bottom-width))); height: calc(max(var(--wiki-content-border-top-radius, var(--wiki-content-border-radius, 0px)) * (1 - var(--wiki-is-navigation-inside-content, 0)), var(--navigation-border-bottom-width))); border: 0 var(--wiki-navigation-border-bottom-style, var(--wiki-navigation-selected-border-style, solid)) var(--wiki-navigation-border-bottom-color, var(--wiki-navigation-selected-border-color)); border-left-width: var(--navigation-border-bottom-width); border-top-width: var(--navigation-border-bottom-width); border-top-left-radius: calc(var(--wiki-content-border-top-radius, var(--wiki-content-border-radius, 0px)) * (1 - var(--wiki-is-navigation-inside-content, 0))); } #left-navigation, #right-navigation { float: none; margin: 0; display: flex; align-items: flex-end; margin-bottom: calc(-1 * var(--navigation-border-bottom-width)); } #left-navigation { flex: 0 0 auto; justify-content: flex-start; } #right-navigation { flex: 1 1 auto; justify-content: flex-end; } #left-navigation::before, #left-navigation::after, #right-navigation::before, #right-navigation::after { content: ""; display: block; height: 0; border-bottom: var(--navigation-border-bottom-width) var(--wiki-navigation-border-bottom-style, var(--wiki-navigation-selected-border-style, solid)) var(--wiki-navigation-border-bottom-color, var(--wiki-navigation-selected-border-color)); flex: 0 0 auto; } #left-navigation::before { box-sizing: border-box; width: var(--wiki-navigation-left-spacing, 0px); border-bottom-width: 0; } #left-navigation::after { width: var(--wiki-navigation-gap-between-left-and-right); } #right-navigation::before { flex: 1 1 auto; width: auto; } #right-navigation::after { width: var(--wiki-navigation-right-spacing); display: none; /* only for desktop */ } /*** tabs ***/ /* reset */ .vector-menu, .vector-menu *, .vector-menu-tabs-legacy li { background: none; } .vector-menu input { border: 0; } /* tabs list */ .vector-menu-tabs { height: unset; padding: unset; } .vector-menu-tabs .vector-menu-content { height: 100%; } .vector-menu-tabs-legacy ul{ float: none; } .vector-menu-tabs .vector-menu-content-list { display: flex; align-items: flex-end; } /* tab */ .vector-menu-tabs .mw-list-item, .vector-menu-dropdown { /* outer box of normal tabs: border-bottom */ border-bottom: var(--navigation-border-bottom-width) var(--wiki-navigation-border-bottom-style, var(--wiki-navigation-selected-border-style, solid)) var(--wiki-navigation-border-bottom-color, var(--wiki-navigation-selected-border-color)); position: relative; margin-right: max(0px, var(--wiki-navigation-tab-spacing)); /* make space for gap */ height: auto; padding-bottom: var(--wiki-navigation-bottom-spacing, 0px); cursor: auto; } .vector-menu-dropdown .vector-menu-checkbox{ height: calc(100% - var(--wiki-navigation-bottom-spacing, 0px)); } .vector-menu-tabs .mw-list-item:hover, .vector-menu-dropdown:hover{ border-bottom-color: var(--wiki-navigation-border-bottom-color--hover, var(--wiki-navigation-border-bottom-color--hover, var(--wiki-navigation-border-color, var(--wiki-content-border-color)))); } .vector-menu-tabs .mw-list-item::after, .vector-menu-dropdown::after { /* gap */ content: ""; display: block; width: max(0px, var(--wiki-navigation-tab-spacing)); height: 0; border-bottom: var(--navigation-border-bottom-width) var(--wiki-navigation-border-bottom-style, var(--wiki-navigation-selected-border-style, solid)) var(--wiki-navigation-border-bottom-color, var(--wiki-navigation-selected-border-color)); position: absolute; left: 100%; bottom: calc(0px - var(--navigation-border-bottom-width)); } .vector-menu-tabs .mw-list-item + .mw-list-item, .vector-menu-tabs .placeholder + .mw-list-item, .vector-menu-dropdown { margin-left: calc(min(0px, var(--wiki-navigation-tab-spacing))); } .vector-menu-tabs .mw-list-item a, .vector-menu-tabs .mw-list-item a:visited, #mw-head .vector-menu-dropdown .vector-menu-heading { /* "#mw-head " is needed here to correctly overwriting mw default css */ /* inner box of normal tabs: tab style */ float: none; height: auto; margin: 0; padding: var(--wiki-navigation-tab-padding-top, 1.25em) var(--wiki-navigation-tab-padding-x, 0.75em) var(--wiki-navigation-tab-padding-bottom, 4px); border: var(--wiki-navigation-border-width, 1px) var(--wiki-navigation-border-style, solid) var(--wiki-navigation-border-color); border-bottom-width: calc(min(var(--wiki-navigation-bottom-spacing, 0px)*999, var(--wiki-navigation-border-width, 1px))); border-radius: var(--wiki-navigation-border-radius) var(--wiki-navigation-border-radius) 0 0; border-image: var(--wiki-navigation-border-image); color: var(--wiki-navigation-text-color); background-image: var(--wiki-navigation-background-image, none); background-color: color-mix(in srgb, var(--wiki-navigation-background-color) var(--wiki-navigation-background-opacity), transparent); background-size: var(--wiki-navigation-background-size, auto); background-repeat: var(--wiki-navigation-background-repeat, repeat); background-position: var(--wiki-navigation-background-position, center); font-size: var(--wiki-navigation-font-size, 0.8125em); font-weight: var(--wiki-navigation-font-weight, normal); text-transform: var(--wiki-navigation-text-transform, none); backdrop-filter: var(--wiki-navigation-backdrop-filter, var(--wiki-navigation-selected-backdrop-filter, none)); } .vector-menu-tabs .mw-list-item a:hover, #mw-head .vector-menu-dropdown:hover .vector-menu-heading { border-color: var(--wiki-navigation-border-color--hover, var(--wiki-navigation-border-color)); color: var(--wiki-navigation-text-color--hover); border-image: var(--wiki-navigation-border-image--hover); background-image: var(--wiki-navigation-background-image--hover, var(--wiki-navigation-background-image, none)); background-color: color-mix(in srgb, var(--wiki-navigation-background-color--hover, var(--wiki-navigation-background-color)) var(--wiki-navigation-background-opacity--hover, var(--wiki-navigation-background-opacity)), transparent); background-size: var(--wiki-navigation-background-size--hover, var(--wiki-navigation-background-size, auto)); background-repeat: var(--wiki-navigation-background-repeat--hover, var(--wiki-navigation-background-repeat, repeat)); background-position: var(--wiki-navigation-background-position--hover, var(--wiki-navigation-background-position, center)); transform: var(--wiki-navigation-transform--hover, none); } .vector-menu-tabs .mw-list-item.selected { background: none; border-bottom-color: transparent; } .vector-menu-tabs .mw-list-item.selected a { /* inner box of selected tab: tab style */ background-image: var(--wiki-navigation-selected-background-image, none); background-color: color-mix(in srgb, var(--wiki-navigation-selected-background-color) var(--wiki-navigation-selected-background-opacity), transparent); background-size: var(--wiki-navigation-selected-background-size, auto); background-repeat: var(--wiki-navigation-selected-background-repeat, repeat); background-position: var(--wiki-navigation-selected-background-position, center); border: var(--wiki-navigation-selected-border-width, 1px) var(--wiki-navigation-selected-border-style, solid) var(--wiki-navigation-selected-border-color); border-bottom-width: calc(min(var(--wiki-navigation-bottom-spacing, 0px)*999, var(--wiki-navigation-selected-border-width, 1px))); border-image: var(--wiki-navigation-selected-border-image); color: var(--wiki-navigation-selected-text-color); font-weight: var(--wiki-navigation-selected-font-weight, var(--wiki-navigation-font-weight, normal)); backdrop-filter: var(--wiki-navigation-selected-backdrop-filter, none); } .vector-menu-tabs .mw-list-item.selected::before { content: ''; display: block; width: 100%; box-sizing: border-box; height: var(--navigation-border-bottom-width); border: var(--wiki-navigation-selected-border-width, var(--wiki-content-border-width, 1px)) var(--wiki-navigation-border-bottom-style, var(--wiki-navigation-selected-border-style, solid)) var(--wiki-navigation-border-bottom-color, var(--wiki-navigation-selected-border-color)); border-top-width: 0; border-bottom-width: 0; position: absolute; bottom: calc(0px - var(--navigation-border-bottom-width)); background: var(--wiki-navigation-selected-border-bottom-background, transparent); background-clip: padding-box; } /* watch/unwatch star */ .vector-menu-tabs #ca-watch.icon a, .vector-menu-tabs #ca-unwatch.icon a { width: var(--wiki-navigation-icon-size, 1em); height: 100%; box-sizing: content-box; padding: var(--wiki-navigation-tab-padding-top, 1.25em) var(--wiki-navigation-tab-padding-x--icon, var(--wiki-navigation-tab-padding-x, 0.75em)) var(--wiki-navigation-tab-padding-bottom, 4px) var(--wiki-navigation-tab-padding-x--icon, var(--wiki-navigation-tab-padding-x, 0.75em)); color: transparent; /* for watch/unwatch, the text of <a> will be plain 'watch'/'unwatch' without <span> after clicking. */ display: flex; align-items: center; text-indent: 999px; } .vector-menu-tabs #ca-watch.icon a::before, .vector-menu-tabs #ca-unwatch.icon a::before { content: ""; display: block; position: unset; background-image: none !important; width: var(--wiki-navigation-icon-size, 1em); height: var(--wiki-navigation-icon-size, 1em); flex: 0 0 auto; --mask: var(--icon) no-repeat; -webkit-mask: var(--mask); mask: var(--mask); -webkit-mask-size: 100% 100%; mask-size: 100% 100%; -webkit-mask-position: center center; mask-position: center center; background-color: var(--wiki-navigation-text-color); } .vector-menu-tabs #ca-watch.icon a:hover::before, .vector-menu-tabs #ca-unwatch.icon a:hover::before { background-color: var(--wiki-navigation-text-color--hover); } .vector-menu-tabs #ca-unwatch.icon .loading::before, .vector-menu-tabs #ca-watch.icon .loading::before{ transform-origin: 50% 56.25%; } .vector-menu-tabs #ca-watch.icon { /* line star */ --icon: var(--icon-star-empty); } .vector-menu-tabs #ca-unwatch.icon { /* solid star */ --icon: var(--icon-star-filled); } /*** dropdown menu ***/ .vector-menu-dropdown .vector-menu-heading { /* "More" */ /* tab label */ position: relative; display: flex; align-items: center; gap: 0.25em; } .vector-menu-dropdown .vector-menu-heading::after { /* arrow icon */ content: ""; display: block; width: 1em; height: 1em; margin-top: 1px; /* tweak offset */ --mask: var(--icon-chevron-down) no-repeat; -webkit-mask: var(--mask); mask: var(--mask); -webkit-mask-size: 100% 100%; mask-size: 100% 100%; -webkit-mask-position: center center; mask-position: center center; background: unset; background-color: var(--wiki-navigation-text-color); filter: none; } .vector-menu-dropdown:hover .vector-menu-heading::after { /* .vector-menu-heading is covered by .vector-menu-checkbox, therefore we can't use .vector-menu-heading:hover::after */ background-color: var(--wiki-navigation-text-color--hover); } .vector-menu-dropdown .mw-list-item a:not(.vector-icon) { font-size: var(--wiki-navigation-dropdown-font-size, 0.8125em); } .vector-menu-dropdown .vector-menu-content { /* dropdown list body */ border: none; background: none; left: 0; /* reset */ margin: 0; /* reset */ top: calc(100% - var(--wiki-navigation-bottom-spacing, 0px)); overflow: unset; } .vector-menu-dropdown .vector-menu-content ul { border: var(--wiki-navigation-dropdown-border-width) solid var(--wiki-navigation-dropdown-border-color); border-radius: 0 0 var(--wiki-navigation-dropdown-border-radius) var(--wiki-navigation-dropdown-border-radius); border-image: var(--wiki-navigation-dropdown-border-image); background: color-mix(in srgb, var(--wiki-navigation-dropdown-background-color, var(--wiki-content-background-color)) var(--wiki-navigation-dropdown-background-opacity, var(--wiki-content-background-opacity, 100%)), transparent); box-shadow: var(--wiki-navigation-dropdown-box-shadow, var(--wiki-navigation-dropdown-shadow, none)); /* --wiki-navigation-dropdown-shadow is deprecated name */ backdrop-filter: var(--wiki-navigation-dropdown-backdrop-filter); padding: var(--wiki-navigation-dropdown-padding, 0); margin-top: var(--wiki-navigation-dropdown-offset, 0); } .vector-menu-dropdown .vector-menu-content li:hover { background: var(--wiki-navigation-dropdown-item-background--hover, none); } .vector-menu-dropdown .vector-menu-content li a { display: block; padding: var(--wiki-navigation-dropdown-item-padding, 0); } .vector-menu-dropdown .vector-menu-content li a, .vector-menu-dropdown .vector-menu-content li a:visited { color: var(--wiki-navigation-dropdown-text-color, var(--wiki-navigation-text-color)); } .vector-menu-dropdown .vector-menu-content li a:hover { color: var(--wiki-navigation-dropdown-text-color--hover, var(--wiki-navigation-text-color--hover, var(--wiki-content-link-color--hover))); /* fallback for backwards compatibility */ } /*** search form ***/ #p-search { margin: 0; padding: 0 calc(max(0px, var(--wiki-navigation-right-spacing, 0px))) calc(var(--wiki-navigation-search-bottom-spacing, 3px) + var(--navigation-border-bottom-width)) calc(max(0px, 3px - max(0px, var(--wiki-navigation-tab-spacing, -1px)))); z-index: 2; position: relative; font-size: var(--wiki-navigation-search-font-size, var(--wiki-navigation-font-size, 0.8125em)); } .vector-search-box form { margin: unset; } #p-search .searchButton { background-color: transparent; font-size: unset; } /*new search form */ .cdx-search-input--has-end-button .cdx-search-input__input-wrapper{ margin: 0; } .cdx-menu-item--enabled.cdx-menu-item--highlighted { background-color: var(--wiki-navigation-search-highlight-background-color); } #p-search input{ line-height: 1.25; /* "normal" behaves inconsistently in different browsers */ } #p-search input{ height: unset; min-height: var(--wiki-navigation-search-height, 2em); } #p-search button{ height: unset; min-height: var(--wiki-navigation-search-height, 2em); min-width: var(--wiki-navigation-search-height, 2em); top: 0; bottom: 0; right: 2px; background-color: color-mix(in srgb, var(--wiki-navigation-search-button-color, currentColor) var(--wiki-navigation-search-button-color-opacity, 80%), transparent); opacity: 100%; } #p-search button:hover, #p-search button:focus{ background-color: color-mix(in srgb, var(--wiki-navigation-search-button-color--hover, var(--wiki-navigation-search-button-color, currentColor)) var(--wiki-navigation-search-button-color-opacity--hover, 95%), transparent); opacity: 100%; } /* top border of the content box */ #p-search::before { content: ""; display: block; width: calc(100% - calc(max(var(--wiki-content-border-top-radius, var(--wiki-content-border-radius, 0px)) * (1 - var(--wiki-is-navigation-inside-content, 0)), var(--navigation-border-bottom-width)))); height: 0; border-bottom: var(--navigation-border-bottom-width) var(--wiki-navigation-border-bottom-style, var(--wiki-navigation-selected-border-style, solid)) var(--wiki-navigation-border-bottom-color, var(--wiki-navigation-selected-border-color)); position: absolute; bottom: 0; left: 0; } /* top right border-radius of content area */ #p-search::after { content: ""; display: block; width: calc(max(var(--wiki-content-border-top-radius, var(--wiki-content-border-radius, 0px)) * (1 - var(--wiki-is-navigation-inside-content, 0)), var(--navigation-border-bottom-width))); height: calc(max(var(--wiki-content-border-top-radius, var(--wiki-content-border-radius, 0px)) * (1 - var(--wiki-is-navigation-inside-content, 0)), var(--navigation-border-bottom-width))); box-sizing: border-box; border-width: var(--navigation-border-bottom-width) var(--navigation-border-bottom-width) 0 0; border-style: var(--wiki-navigation-border-bottom-style, var(--wiki-navigation-selected-border-style, solid)); border-color: var(--wiki-navigation-border-bottom-color, var(--wiki-navigation-selected-border-color)); border-radius: 0 calc(var(--wiki-content-border-top-radius, var(--wiki-content-border-radius, 0px)) * (1 - var(--wiki-is-navigation-inside-content, 0))) 0 0; position: absolute; top: calc(100% - var(--navigation-border-bottom-width)); right: 0; } /****************** * End vector tabs * *******************/ /******** * Links * *********/ a, .mw-parser-output a.external, .mw-parser-output a.extiw { color: var(--wiki-content-link-color); } a:visited, .mw-parser-output a.extiw:visited, .mw-parser-output a.external:visited { color: var(--wiki-content-link-color--visited); } a:not(.mw-selflink):hover, a:visited:hover, .mw-parser-output a.extiw:hover, .mw-parser-output a.extiw:visited:hover, .mw-parser-output a.external:hover, .mw-parser-output a.external:visited:hover { color: var(--wiki-content-link-color--hover); } a.new, a.new:visited, a.new:hover, .mw-usertoollinks-contribs-no-edits { color: var(--wiki-content-redlink-color); } a:not(.mw-selflink):active, a:visited:active, .mw-parser-output a.extiw:active, .mw-parser-output a.extiw:visited:active, .mw-parser-output a.external:active, .mw-parser-output a.external:visited:active { color: var(--wiki-warning-color); } /* link decorations */ /* move external marker to an after so we can filter it to link color */ .mw-parser-output a.external, .sitenotice a.external { background: none; padding-right: 0; } .mw-parser-output a.external::after, .sitenotice a.external::after, a.extiw[title="wgg:globalprefs"]::after { display: inline-block; width: 1em; height: 1em; margin-left: 0px; content: ''; vertical-align: text-top; --mask: var(--icon) no-repeat; --mask-size: 0.857em; --mask-position: center right; -webkit-mask: var(--mask); mask: var(--mask); -webkit-mask-size: var(--mask-size); mask-size: var(--mask-size); -webkit-mask-position: var(--mask-position); mask-position: var(--mask-position); background-color: currentColor; } .mw-parser-output a.external::after, .sitenotice a.external::after { --icon: url("data:image/svg+xml,%3Csvg xmlns=%22http://www.w3.org/2000/svg%22 width=%2212%22 height=%2212%22 viewBox=%220 0 12 12%22%3E %3Cpath d=%22M6 1h5v5L8.86 3.85 4.7 8 4 7.3l4.15-4.16L6 1ZM2 3h2v1H2v6h6V8h1v2a1 1 0 0 1-1 1H2a1 1 0 0 1-1-1V4a1 1 0 0 1 1-1Z%22/%3E %3C/svg%3E"); } a.extiw[title="wgg:globalprefs"]::after { --icon: url("data:image/svg+xml,%3Csvg%20xmlns%3D%22http%3A%2F%2Fwww.w3.org%2F2000%2Fsvg%22%20width%3D%2220%22%20height%3D%2220%22%20viewBox%3D%220%200%2020%2020%22%20aria-hidden%3D%22true%22%3E%3C!----%3E%3Cg%3E%3Cg%20xmlns%3Axlink%3D%22http%3A%2F%2Fwww.w3.org%2F1999%2Fxlink%22%20transform%3D%22translate(10%2010)%22%3E%3Cpath%20id%3D%22cdx-icon-settings-a%22%20d%3D%22M1.5-10h-3l-1%206.5h5m0%207h-5l1%206.5h3%22%3E%3C%2Fpath%3E%3Cuse%20xlink%3Ahref%3D%22%23cdx-icon-settings-a%22%20transform%3D%22rotate(45)%22%3E%3C%2Fuse%3E%3Cuse%20xlink%3Ahref%3D%22%23cdx-icon-settings-a%22%20transform%3D%22rotate(90)%22%3E%3C%2Fuse%3E%3Cuse%20xlink%3Ahref%3D%22%23cdx-icon-settings-a%22%20transform%3D%22rotate(135)%22%3E%3C%2Fuse%3E%3C%2Fg%3E%3Cpath%20d%3D%22M10%202.5a7.5%207.5%200%20000%2015%207.5%207.5%200%20000-15v4a3.5%203.5%200%20010%207%203.5%203.5%200%20010-7%22%3E%3C%2Fpath%3E%3C%2Fg%3E%3C%2Fsvg%3E"); } .plainlinks a.external::after, .plainlinks a.extiw[title="wgg:globalprefs"]::after { display: none; } /* Using a background instead of an ::after prevents the icon from wrapping onto its own line, but prevents it from being recolored. Use this only for icons that should not be recolored, otherwise use the ::after method used for external links above */ a.extiw[title^="wikipedia:"], a.extiw[title^="wp:"], a.extiw[title^="mw:"], a.extiw[title^="support:"] { padding-right: 1em; background-position: center right; background-repeat: no-repeat; background-size: 0.857em; } a.extiw[title^="wikipedia:"], a.extiw[title^="wp:"] { background-image: url(https://commons.wiki.gg/images/2/28/Wikipedia.svg?202406) } a.extiw[title^="mw:"] { background-image: url(https://commons.wiki.gg/images/9/9b/MediaWiki.svg?202406) } a.extiw[title^="support:"] { background-image: url(https://commons.wiki.gg/images/9/9b/Wiki.gg_icon-pink.svg) } .plainlinks a.extiw { background-image:none; } /************ * End links * *************/ /*************** * Left Sidebar * ****************/ #mw-panel { width: var(--wiki-sidebar-width, 10em); box-sizing: border-box; position: relative; z-index: 1; /* above #footer */ top: calc(-1 * var(--wiki-is-navigation-inside-content, 0) * (var(--wiki-navigation-height) + var(--wiki-content-border-width,1px)) + var(--wiki-sidebar-offset, 0px)); margin-top: calc((1 - var(--wiki-is-top-logo, 0)) * (var(--wiki-logo-file-height, 160) / var(--wiki-logo-file-width, 160) * var(--wiki-sidebar-width, 10em) + var(--wiki-logo-margin, 15px))); /* if is-top-logo, logo-file ratio * sidebar-width + logo-margin, else 0 */ padding: var(--wiki-sidebar-box-padding, 0); background: var(--wiki-sidebar-box-background, none); border: var(--wiki-sidebar-box-border, 0); border-radius: var(--wiki-sidebar-box-border-radius, 0); border-image: var(--wiki-sidebar-box-border-image, none); } #mw-panel .vector-menu-portal { background-color: color-mix(in srgb, var(--wiki-sidebar-background-color) var(--wiki-sidebar-background-opacity), transparent); background-image: var(--wiki-sidebar-background-image, none); background-size: var(--wiki-sidebar-background-size, auto); background-repeat: var(--wiki-sidebar-background-repeat, repeat); background-position: var(--wiki-sidebar-background-position, center); border: var(--wiki-sidebar-border-width, 1px) var(--wiki-sidebar-border-style, solid) var(--wiki-sidebar-border-color); border-image: var(--wiki-sidebar-border-image, none); margin: 0 var(--wiki-sidebar-margin, 0.5em); padding: var(--wiki-sidebar-padding, 0); box-shadow: var(--wiki-sidebar-box-shadow, none); filter: var(--wiki-sidebar-filter, none); backdrop-filter: var(--wiki-sidebar-backdrop-filter, none); overflow: hidden; /* to prevent overflow when combining border-radius with heading background */ } #mw-panel #p-ext-discordwidget{ backdrop-filter: none; } @supports not (color:color-mix(in srgb, #000, transparent)) { #mw-panel .vector-menu-portal { background-color: var(--wiki-sidebar-background-color); } } #mw-panel .vector-menu-portal + .vector-menu-portal { border-top-width: 0; } #mw-panel .vector-menu-portal:last-child { margin-bottom: 0; } /* Sidebar spacing and border-radius section */ #mw-panel .vector-menu-portal:not(:last-child) { margin-bottom: var(--wiki-sidebar-portal-spacing); } #mw-panel #p-logo + .vector-menu-portal, #mw-panel #p-ext-discordwidget + .vector-menu-portal { /* The way this works is that if the sidebar does not have any spacing, only the top and bottom corners of the top and bottom portals respectively should be rounded, instead of all corners of every portal. min and calc are combined here to basically create an `if x > 0 then y else z` function. The lower of (sidebar-border-radius) and (spacing * 999) are compared and the smaller value is taken (999 is simply an arbitrary large number). If portal spacing is zero, multiplying it gets 0 and will be the smaller value. If it's non-zero, it will be large and sidebar-border-radius will be the smaller value. This is only applied to the "inner" corners because we'd want the "outer" corners rounded in either scenario. */ border-radius: var(--wiki-sidebar-border-radius) var(--wiki-sidebar-border-radius) calc(min(var(--wiki-sidebar-border-radius), var(--wiki-sidebar-portal-spacing) * 999)) calc(min(var(--wiki-sidebar-border-radius), var(--wiki-sidebar-portal-spacing) * 999)); } #mw-panel .vector-menu-portal:last-child { /* see rule above for explanation */ border-radius: calc(min(var(--wiki-sidebar-border-radius), var(--wiki-sidebar-portal-spacing) * 999)) calc(min(var(--wiki-sidebar-border-radius), var(--wiki-sidebar-portal-spacing) * 999)) var(--wiki-sidebar-border-radius) var(--wiki-sidebar-border-radius); } #mw-panel .vector-menu-portal { /* see above rules for explanation */ border-radius: calc(min(var(--wiki-sidebar-border-radius), var(--wiki-sidebar-portal-spacing) * 999)); } #mw-panel .vector-menu-portal + .vector-menu-portal { /* This keeps the border from doubling up if there is no spacing between them, The portals other than the first only have a top border if there is spacing */ border-top-width: min(var(--wiki-sidebar-border-width, 1px), var(--wiki-sidebar-portal-spacing, 0px)); /* the 1px and 0px fallbacks are for backwards compatibility with older versions of the loadout */ } #mw-panel #p-ext-discordwidget + .vector-menu-portal { border-top-width: var(--wiki-sidebar-border-width, 1px); } /* end sidebar spacing and border-radius */ .vector-menu-portal .vector-menu-heading { padding: var(--wiki-sidebar-heading-padding, 0.5rem 0.25rem 0.5rem 0.5rem); margin: var(--wiki-sidebar-heading-margin, 0 0 var(--wiki-sidebar-heading-margin-bottom, -0.5rem) 0); /* --wiki-sidebar-heading-margin-bottom is deprecated */ background: var(--wiki-sidebar-heading-background, none); border-image: var(--wiki-sidebar-heading-border-image, none); color: var(--wiki-sidebar-heading-color); font-family: var(--wiki-sidebar-heading-font-family); font-size: var(--wiki-sidebar-heading-font-size, 0.75em); font-weight: var(--wiki-sidebar-heading-font-weight, normal); font-style: var(--wiki-sidebar-heading-font-style, normal); text-transform: var(--wiki-sidebar-heading-text-transform, none); line-height: var(--wiki-sidebar-heading-line-height, normal); text-shadow: var(--wiki-sidebar-heading-text-shadow, none) } .vector-menu-portal .vector-menu-content { margin: var(--wiki-sidebar-list-margin, 0); padding: var(--wiki-sidebar-list-padding, 0.25rem); background: var(--wiki-sidebar-list-background, none); border-image: var(--wiki-sidebar-list-border-image, none); } .vector-menu-portal .vector-menu-content ul { padding: 0; display: flex; flex-direction: column; gap: var(--wiki-sidebar-list-item-spacing, 0); } .vector-menu-portal .vector-menu-content li { font-size: var(--wiki-sidebar-font-size, 0.75em); line-height: var(--wiki-sidebar-line-height, 1.125em); padding: 0; background: var(--wiki-sidebar-list-item-background, none); border-image: var(--wiki-sidebar-list-item-border-image, none); } .vector-menu-portal .vector-menu-content li:hover { background: var(--wiki-sidebar-list-item-background--hover, var(--wiki-sidebar-list-item-background, none)); border-image: var(--wiki-sidebar-list-item-border-image--hover, var(--wiki-sidebar-list-item-border-image, none)); } .vector-menu-portal .vector-menu-content li a { display: block; padding: var(--wiki-sidebar-list-item-padding, 0.25em 0.25rem); } .vector-menu-portal .vector-menu-content li a.feedlink{ /* Atom */ background: none; } .vector-menu-portal .vector-menu-content .mw-list-item a, .vector-menu-portal .vector-menu-content .mw-list-item a:visited, .vector-menu-portal .vector-menu-content li a, .vector-menu-portal .vector-menu-content li a:visited { color: var(--wiki-sidebar-link-color); } .vector-menu-portal .vector-menu-content .mw-list-item a:hover, .vector-menu-portal .vector-menu-content .mw-list-item a:visited:hover { color: var(--wiki-sidebar-link-color--hover, var(--wiki-content-link-color--hover)); /* fallback for backwards compatibility */ } #t-newpage { --sidebar-icon: url('data:image/svg+xml;charset=UTF-8,%3Csvg xmlns%3D%22http%3A%2F%2Fwww.w3.org%2F2000%2Fsvg%22 viewBox%3D%220 0 384 512%22%3E%3C!--%21Font Awesome Free 6.5.2 by %40fontawesome - https%3A%2F%2Ffontawesome.com License - https%3A%2F%2Ffontawesome.com%2Flicense%2Ffree Copyright 2024 Fonticons%2C Inc.--%3E%3Cpath d%3D%22M0 64C0 28.7 28.7 0 64 0H224V128c0 17.7 14.3 32 32 32H384V448c0 35.3-28.7 64-64 64H64c-35.3 0-64-28.7-64-64V64zm384 64H256V0L384 128z%22%2F%3E%3C%2Fsvg%3E'); order: -1; } #t-upload { --sidebar-icon: url('data:image/svg+xml;charset=UTF-8,%3Csvg xmlns%3D%22http%3A%2F%2Fwww.w3.org%2F2000%2Fsvg%22 viewBox%3D%220 0 512 512%22%3E%3C!--%21Font Awesome Free 6.5.2 by %40fontawesome - https%3A%2F%2Ffontawesome.com License - https%3A%2F%2Ffontawesome.com%2Flicense%2Ffree Copyright 2024 Fonticons%2C Inc.--%3E%3Cpath d%3D%22M288 109.3V352c0 17.7-14.3 32-32 32s-32-14.3-32-32V109.3l-73.4 73.4c-12.5 12.5-32.8 12.5-45.3 0s-12.5-32.8 0-45.3l128-128c12.5-12.5 32.8-12.5 45.3 0l128 128c12.5 12.5 12.5 32.8 0 45.3s-32.8 12.5-45.3 0L288 109.3zM64 352H192c0 35.3 28.7 64 64 64s64-28.7 64-64H448c35.3 0 64 28.7 64 64v32c0 35.3-28.7 64-64 64H64c-35.3 0-64-28.7-64-64V416c0-35.3 28.7-64 64-64zM432 456a24 24 0 1 0 0-48 24 24 0 1 0 0 48z%22%2F%3E%3C%2Fsvg%3E'); order: -1; } #t-print { --sidebar-icon: url('data:image/svg+xml;charset=UTF-8,%3Csvg xmlns%3D%22http%3A%2F%2Fwww.w3.org%2F2000%2Fsvg%22 viewBox%3D%220 0 512 512%22%3E%3C!--%21Font Awesome Free 6.5.2 by %40fontawesome - https%3A%2F%2Ffontawesome.com License - https%3A%2F%2Ffontawesome.com%2Flicense%2Ffree Copyright 2024 Fonticons%2C Inc.--%3E%3Cpath d%3D%22M128 0C92.7 0 64 28.7 64 64v96h64V64H354.7L384 93.3V160h64V93.3c0-17-6.7-33.3-18.7-45.3L400 18.7C388 6.7 371.7 0 354.7 0H128zM384 352v32 64H128V384 368 352H384zm64 32h32c17.7 0 32-14.3 32-32V256c0-35.3-28.7-64-64-64H64c-35.3 0-64 28.7-64 64v96c0 17.7 14.3 32 32 32H64v64c0 35.3 28.7 64 64 64H384c35.3 0 64-28.7 64-64V384zM432 248a24 24 0 1 1 0 48 24 24 0 1 1 0-48z%22%2F%3E%3C%2Fsvg%3E'); order: -1; } #t-whatlinkshere { --sidebar-icon: url('data:image/svg+xml;charset=UTF-8,%3Csvg xmlns%3D%22http%3A%2F%2Fwww.w3.org%2F2000%2Fsvg%22 viewBox%3D%220 0 640 512%22%3E%3C!--%21Font Awesome Free 6.5.2 by %40fontawesome - https%3A%2F%2Ffontawesome.com License - https%3A%2F%2Ffontawesome.com%2Flicense%2Ffree Copyright 2024 Fonticons%2C Inc.--%3E%3Cpath d%3D%22M579.8 267.7c56.5-56.5 56.5-148 0-204.5c-50-50-128.8-56.5-186.3-15.4l-1.6 1.1c-14.4 10.3-17.7 30.3-7.4 44.6s30.3 17.7 44.6 7.4l1.6-1.1c32.1-22.9 76-19.3 103.8 8.6c31.5 31.5 31.5 82.5 0 114L422.3 334.8c-31.5 31.5-82.5 31.5-114 0c-27.9-27.9-31.5-71.8-8.6-103.8l1.1-1.6c10.3-14.4 6.9-34.4-7.4-44.6s-34.4-6.9-44.6 7.4l-1.1 1.6C206.5 251.2 213 330 263 380c56.5 56.5 148 56.5 204.5 0L579.8 267.7zM60.2 244.3c-56.5 56.5-56.5 148 0 204.5c50 50 128.8 56.5 186.3 15.4l1.6-1.1c14.4-10.3 17.7-30.3 7.4-44.6s-30.3-17.7-44.6-7.4l-1.6 1.1c-32.1 22.9-76 19.3-103.8-8.6C74 372 74 321 105.5 289.5L217.7 177.2c31.5-31.5 82.5-31.5 114 0c27.9 27.9 31.5 71.8 8.6 103.9l-1.1 1.6c-10.3 14.4-6.9 34.4 7.4 44.6s34.4 6.9 44.6-7.4l1.1-1.6C433.5 260.8 427 182 377 132c-56.5-56.5-148-56.5-204.5 0L60.2 244.3z%22%2F%3E%3C%2Fsvg%3E'); order: -1; } #t-specialpages { --sidebar-icon: url('data:image/svg+xml;charset=UTF-8,%3Csvg xmlns%3D%22http%3A%2F%2Fwww.w3.org%2F2000%2Fsvg%22 viewBox%3D%220 0 576 512%22%3E%3C!--%21Font Awesome Free 6.5.2 by %40fontawesome - https%3A%2F%2Ffontawesome.com License - https%3A%2F%2Ffontawesome.com%2Flicense%2Ffree Copyright 2024 Fonticons%2C Inc.--%3E%3Cpath d%3D%22M316.9 18C311.6 7 300.4 0 288.1 0s-23.4 7-28.8 18L195 150.3 51.4 171.5c-12 1.8-22 10.2-25.7 21.7s-.7 24.2 7.9 32.7L137.8 329 113.2 474.7c-2 12 3 24.2 12.9 31.3s23 8 33.8 2.3l128.3-68.5 128.3 68.5c10.8 5.7 23.9 4.9 33.8-2.3s14.9-19.3 12.9-31.3L438.5 329 542.7 225.9c8.6-8.5 11.7-21.2 7.9-32.7s-13.7-19.9-25.7-21.7L381.2 150.3 316.9 18z%22%2F%3E%3C%2Fsvg%3E'); order: -1; } #t-cargopagevalueslink { --sidebar-icon: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' version='1.1' viewBox='0 0 126.971 136.024'%3E%3Cpath d='m105.999 0-84 .049L0 8.957v127.065h126.97V8.957Z' fill='none' display='inline' opacity='1' paint-order='normal'/%3E%3Cpath d='m9.735 8.774 12.265-5h84l12.25 5H9.75' fill='%23000' fill-opacity='1' display='inline'/%3E%3Cpath d='M3.5 41.024H28v63.5H3.5zm95.5 0h24.5v63.5H99zm-95.5 67.5H123v24H3.5zm0-95.5H123v24H3.5zm27.985 28V59.67l13.61 13.61 17.323 17.324 1.788 1.787 12.131 12.132h19.147v-16.21l-13.6-13.6-1.788-1.787-17.325-17.324-14.578-14.579H31.485zm45.865 0-12.2 12.2 17.324 17.324 13.01-13.01V41.024H77.35zM42.716 75.658l-11.23 11.231v17.634h17.013l11.541-11.54-17.324-17.325z' fill='%23000' fill-opacity='1' fill-rule='nonzero' display='inline' opacity='1' paint-order='normal'/%3E%3C/svg%3E"); order: -1; } #feedlinks{ --sidebar-icon: url("data:image/svg+xml,%3C%3Fxml version='1.0' %3F%3E%3Csvg baseProfile='tiny' height='24px' id='Layer_1' version='1.2' viewBox='0 0 24 24' width='24px' xml:space='preserve' xmlns='http://www.w3.org/2000/svg' xmlns:xlink='http://www.w3.org/1999/xlink'%3E%3Cpath d='M6.002,15.999C4.895,15.999,3.998,16.896,4,18c0,1.104,0.896,2.001,2.002,1.999C7.105,20.001,8.002,19.105,8,18 C8.002,16.893,7.105,15.997,6.002,15.999z'/%3E%3Cpath d='M6,4C4.896,4,4,4.896,4,6s0.896,2,2,2c5.514,0,10,4.486,10,10c0,1.104,0.896,2,2,2s2-0.896,2-2C20,10.28,13.72,4,6,4z'/%3E%3Cpath d='M6,10c-1.104,0-2,0.896-2,2s0.896,2,2,2c2.205,0,4,1.794,4,4c0,1.104,0.896,2,2,2s2-0.896,2-2C14,13.589,10.411,10,6,10z'/%3E%3C/svg%3E"); order: -1; } #t-specialpages > a::before, #t-whatlinkshere > a::before, #t-print > a::before, #t-newpage > a::before, #t-upload > a::before, #t-cargopagevalueslink > a::before, #feedlinks > a::before { content: ''; background-image: var(--sidebar-icon); background-size: contain; background-repeat: no-repeat; background-position: center; display: inline-block; width: 1.25em; height: 1.25em; } #p-tb .mw-list-item > a::before { filter: var(--wiki-sidebar-icon-to-link-filter, var(--wiki-icon-to-link-filter)); } #p-tb .mw-list-item > a { display: flex; align-items: center; gap: 3px; } /******************* * End left sidebar * ********************/ /******* * Logo * ********/ /* [[File:Site-logo.png]] */ #p-logo { width: var(--wiki-logo-box-width); height: var(--wiki-logo-box-height); position: absolute; top: calc(-1 * ( (var(--wiki-navigation-height, 3rem) + var(--wiki-logo-box-height) + var(--wiki-logo-margin, 15px) - var(--wiki-is-navigation-inside-content, 0) * (var(--wiki-navigation-height)) + var(--wiki-sidebar-offset, 0px)) * var(--wiki-is-top-logo, 0) + (var(--wiki-logo-box-height) + var(--wiki-logo-margin,15px)) * (1 - var(--wiki-is-top-logo, 0)) )); left: calc((min((100vw - var(--wiki-left-spacing, 0.5em) - var(--wiki-right-spacing, 0px) - 18px), var(--wiki-page-content-max-width, 9999px)) - var(--wiki-logo-box-width)) / 2 * var(--wiki-is-top-logo, 0)); margin: 0; filter: var(--wiki-logo-filter, none); } #p-logo a { background-size: contain; position: absolute; top: var(--wiki-logo-offset-y, 0); left: var(--wiki-logo-offset-x, 0); bottom: 0; right: 0; width: 100%; height: 100%; background-image: var(--wiki-logo-image, url(filepath://Site-logo.png)); /* The canonical logo must be Site-logo.png. This variable is mainly used to provide different logo for different themes. */ } /*********** * End logo * ************/ /*************** * Content area * ****************/ .content-wrapper { max-width: var(--wiki-page-content-max-width, none); margin-left: auto; margin-right: auto; } .mw-body, .parsoid-body { color: var(--wiki-content-text-color); background-color: color-mix(in srgb, var(--wiki-content-background-color) var(--wiki-content-background-opacity), transparent); margin-left: calc(var(--wiki-sidebar-width, 10em) + var(--wiki-gap-between-sidebar-and-content, 0.5em)); margin-top: unset; padding: var(--wiki-content-top-spacing, 1.25em) var(--wiki-content-right-spacing, 1.5em) var(--wiki-content-bottom-spacing, 1.5em) var(--wiki-content-left-spacing, 1.5em); border-top: 0; border-left: var(--wiki-content-border-width, 1px) solid transparent; border-right: var(--wiki-content-border-width, 1px) solid transparent; border-bottom: var(--wiki-content-border-bottom-width, 1px) solid transparent; border-radius: calc((1 - var(--wiki-is-navigation-inside-content, 0)) * min(var(--wiki-content-border-top-radius, var(--wiki-content-border-radius, 0px)), var(--wiki-navigation-left-spacing, 0px))) calc((1 - var(--wiki-is-navigation-inside-content, 0)) * var(--wiki-content-border-top-radius, var(--wiki-content-border-radius, 0px))) calc(min(var(--wiki-spacing-before-footer, 0px) * 999, var(--wiki-content-border-radius, 0px))) calc(min(var(--wiki-spacing-before-footer, 0px) * 999, var(--wiki-content-border-radius, 0px))); position: relative; border-image: var(--wiki-content-border-image, none); } @supports not (color:color-mix(in srgb, #000, transparent)) { .mw-body, .parsoid-body { background-color: var(--wiki-content-background-color); } } /* apply backdrop-filter on .mw-body results in the creation of a containing block for absolute and fixed positioned descendants, so we have to move it to here */ .mw-body::before, .parsoid-body::before{ content: ''; display: block; backdrop-filter: var(--wiki-content-backdrop-filter, none); position: absolute; top: 0; bottom: 0; left: 0; right: 0; z-index: -1; border-radius: calc((1 - var(--wiki-is-navigation-inside-content, 0)) * min(var(--wiki-content-border-top-radius, var(--wiki-content-border-radius, 0px)), var(--wiki-navigation-left-spacing, 0px))) calc((1 - var(--wiki-is-navigation-inside-content, 0)) * var(--wiki-content-border-top-radius, var(--wiki-content-border-radius, 0px))) calc(min(var(--wiki-spacing-before-footer, 0px) * 999, var(--wiki-content-border-radius, 0px))) calc(min(var(--wiki-spacing-before-footer, 0px) * 999, var(--wiki-content-border-radius, 0px))); /* as .mw-body */ } .mw-body::after, .parsoid-body::after { content: ''; display: block; box-sizing: border-box; position: absolute; left: calc(-1 * var(--wiki-content-border-width, 1px)); right: calc(-1 * var(--wiki-content-border-width, 1px)); top: calc(var(--wiki-content-border-top-radius, var(--wiki-content-border-radius, 0px)) * (1 - var(--wiki-is-navigation-inside-content, 0))); bottom: calc(-1 * var(--wiki-content-border-bottom-width, 1px)); pointer-events: none; border-left: var(--wiki-content-border-width, 1px) var(--wiki-content-border-style, solid) var(--wiki-content-border-color); border-right: var(--wiki-content-border-width, 1px) var(--wiki-content-border-style, solid) var(--wiki-content-border-color); border-bottom: var(--wiki-content-border-bottom-width, 1px) var(--wiki-content-border-bottom-style, solid) var(--wiki-content-border-bottom-color, var(--wiki-content-border-color)); border-radius: 0 0 calc(min(var(--wiki-spacing-before-footer, 0px) * 999, var(--wiki-content-border-radius, 0px))) calc(min(var(--wiki-spacing-before-footer, 0px) * 999, var(--wiki-content-border-radius, 0px))); } #mw-data-after-content { max-width: calc(var(--wiki-page-content-max-width) - var(--wiki-sidebar-width) - var(--wiki-gap-between-sidebar-and-content)); margin-left: calc(var(--wiki-sidebar-width) + var(--wiki-gap-between-sidebar-and-content) + max(0px, 100% - var(--wiki-page-content-max-width)) / 2); box-sizing: border-box; color: var(--wiki-content-text-color); background-color: color-mix(in srgb, var(--wiki-content-background-color) var(--wiki-content-background-opacity), transparent); } #mw-data-after-content .read-more-container { border: var(--wiki-content-border-width, 1px) var(--wiki-content-border-style, solid) var(--wiki-content-border-color); border-top-width: 0; border-bottom: var(--wiki-content-border-bottom-width, 1px) var(--wiki-content-border-bottom-style, solid) var(--wiki-content-border-bottom-color, var(--wiki-content-border-color)); padding: 1em; margin: 0; } #mw-data-after-content .read-more-container:empty { display: none; } @media screen and (min-width: 982px) { #mw-data-after-content .read-more-container { padding: 1.25em 1.5em 1.5em 1.5em; } } .mw-footer { max-width: calc(var(--wiki-page-content-max-width, 9999px) - var(--wiki-sidebar-width, 10em) - var(--wiki-gap-between-sidebar-and-content, 0.5em)); box-sizing: border-box; background-color: color-mix(in srgb, var(--wiki-footer-background-color, var(--wiki-content-background-color)) var(--wiki-footer-background-opacity, var(--wiki-content-background-opacity)), transparent); border: var(--wiki-footer-border-width, 1px) var(--wiki-footer-border-style, solid) var(--wiki-footer-border-color, var(--wiki-content-border-color)); border-top-width: calc(min(var(--wiki-spacing-before-footer, 0px) * 999, var(--wiki-footer-border-width, 1px))); margin-top: var(--wiki-spacing-before-footer, 0px); border-radius: calc(min(var(--wiki-spacing-before-footer, 0px) * 999, var(--wiki-footer-border-radius, var(--wiki-content-border-radius, 0px)))) calc(min(var(--wiki-spacing-before-footer, 0px) * 999, var(--wiki-footer-border-radius, var(--wiki-content-border-radius, 0px)))) var(--wiki-footer-border-radius, var(--wiki-content-border-radius, 0px)) var(--wiki-footer-border-radius, var(--wiki-content-border-radius, 0px)); margin-left: calc(var(--wiki-sidebar-width, 10em) + var(--wiki-gap-between-sidebar-and-content, 0.5em) + max(0px, 100% - var(--wiki-page-content-max-width, 9999px)) / 2); color: var(--wiki-footer-text-color); border-image: var(--wiki-footer-border-image, none); backdrop-filter: var(--wiki-footer-backdrop-filter, none); } @supports not (color:color-mix(in srgb, #000, transparent)) { .mw-footer { background-color: var(--wiki-footer-background-color, var(--wiki-content-background-color)); } } .mw-footer li { color: var(--wiki-footer-text-color); } .mw-footer a, .mw-footer a:visited { color: var(--wiki-footer-link-color); } .mw-footer a:hover, .mw-footer a:visited:hover { color: var(--wiki-footer-link-color--hover); } /* fix */ @media screen and (max-width: 900px) { #footer-icons, #footer-places { clear: unset; } } /******************************* * End content area and footer * *******************************/ /*********** * Headings * ************/ .mw-body h1 { border-bottom: var(--wiki-content-firstheading-border-bottom-width, var(--wiki-content-heading-border-bottom-width, 1px)) var(--wiki-content-firstheading-border-style, var(--wiki-content-heading-border-style, solid)) var(--wiki-content-firstheading-border-color, var(--wiki-content-heading-border-color, var(--wiki-content-border-color))); font-size: var(--wiki-content-firstheading-font-size, 1.8em); font-family: var(--wiki-content-firstheading-font-family, var(--wiki-content-heading-font-family)); font-weight: var(--wiki-content-firstheading-font-weight, var(--wiki-content-heading-font-weight)); font-style: var(--wiki-content-firstheading-font-style, var(--wiki-content-heading-font-style)); text-transform: var(--wiki-content-firstheading-text-transform, var(--wiki-content-heading-text-transform)); line-height: var(--wiki-content-firstheading-line-height, var(--wiki-content-heading-line-height)); color: var(--wiki-content-firstheading-color, var(--wiki-content-heading-color)); text-shadow: var(--wiki-content-firstheading-text-shadow, var(--wiki-content-heading-text-shadow, none)); } .mw-body h2 { border-bottom: var(--wiki-content-heading-border-bottom-width, 1px) var(--wiki-content-heading-border-style, solid) var(--wiki-content-heading-border-color, var(--wiki-content-border-color)); font-size: var(--wiki-content-heading-h2-font-size, 1.5em); font-family: var(--wiki-content-heading-font-family); font-weight: var(--wiki-content-heading-font-weight, normal); font-style: var(--wiki-content-heading-font-style, normal); text-transform: var(--wiki-content-heading-text-transform, none); line-height: var(--wiki-content-heading-line-height, normal); color: var(--wiki-content-heading-color); text-shadow: var(--wiki-content-heading-text-shadow, none); } .mw-body h3, .mw-body h4, .mw-body h5, .mw-body h6{ border-bottom: var(--wiki-content-subheading-border-bottom-width, 0) var(--wiki-content-subheading-border-style, var(--wiki-content-heading-border-style, solid)) var(--wiki-content-subheading-border-color, var(--wiki-content-heading-border-color, var(--wiki-content-border-color))); font-family: var(--wiki-content-subheading-font-family, var(--wiki-body-font-family)); font-weight: var(--wiki-content-subheading-font-weight, bold); font-style: var(--wiki-content-subheading-font-style, normal); text-transform: var(--wiki-content-subheading-text-transform, none); line-height: var(--wiki-content-subheading-line-height, var(--wiki-content-heading-line-height)); color: var(--wiki-content-subheading-color, var(--wiki-content-heading-color)); text-shadow: var(--wiki-content-subheading-text-shadow, var(--wiki-content-heading-text-shadow, none)); } .mw-body h3{ font-size: var(--wiki-content-heading-h3-font-size, 1.2em); } .mw-body h4{ font-size: var(--wiki-content-heading-h4-font-size, 114%); } .mw-body h5{ font-size: var(--wiki-content-heading-h5-font-size, 108%); } .mw-body h6{ font-size: var(--wiki-content-heading-h6-font-size, 100%); } .mw-editsection-bracket, .mw-editsection-divider { color: var(--wiki-content-heading-color); } /*************** * End headings * ****************/ /************* * Wikitables * **************/ .wikitable { background: var(--wiki-content-background-color); border-color: var(--wiki-content-border-color); color: var(--wiki-content-text-color); } .wikitable > tr > th, .wikitable > * > tr > th { background: var(--wiki-content-background-color--secondary); border: 1px solid var(--wiki-content-border-color); } .wikitable > tr > td, .wikitable > * > tr > td { border: 1px solid var(--wiki-content-border-color); } /* Forward = yes bg on Special:Interwiki */ table.mw-interwikitable.body td.mw-interwikitable-local-yes { background: color-mix(in srgb, var(--wiki-success-color) 25%, transparent); } .zebra-table > * > tr:nth-of-type(2n), .zebra-table > tr:nth-of-type(2n) { background: color-mix(in srgb, var(--wiki-content-dynamic-color--secondary) 5%, transparent); } .client-js .sortable:not(.jquery-tablesorter) > * > tr:first-child > th:not(.unsortable), .jquery-tablesorter th.headerSort { background-image: unset; position: relative; } .client-js .sortable:not(.jquery-tablesorter) > * > tr:first-child > th:not(.unsortable)::after, .jquery-tablesorter th.headerSort::after { content: ""; display: block; position: absolute; top: 0; right: 0; width: 21px; height: 100%; --mask: url("data:image/svg+xml,%3Csvg xmlns=%22http://www.w3.org/2000/svg%22 width=%2221%22 height=%229%22 viewBox=%220 0 21 9%22%3E %3Cpath d=%22m14.5 5-4 4-4-4zm0-1-4-4-4 4z%22 fill=%22%23fff%22/%3E %3C/svg%3E") no-repeat; -webkit-mask: var(--mask); mask: var(--mask); -webkit-mask-size: auto; mask-size: auto; -webkit-mask-position: center right; mask-position: center right; background-color: var(--wiki-content-link-color); } .jquery-tablesorter th.headerSortUp::after { --mask: url("data:image/svg+xml,%3Csvg xmlns=%22http://www.w3.org/2000/svg%22 width=%2221%22 height=%224%22 viewBox=%220 0 21 4%22%3E %3Cpath d=%22m6.5 4 4-4 4 4z%22 fill=%22%23fff%22/%3E %3C/svg%3E") no-repeat; } .jquery-tablesorter th.headerSortDown::after { --mask: url("data:image/svg+xml,%3Csvg xmlns=%22http://www.w3.org/2000/svg%22 width=%2221%22 height=%224%22 viewBox=%220 0 21 4%22%3E %3Cpath d=%22m14.5 0-4 4-4-4z%22 fill=%22%23fff%22/%3E %3C/svg%3E") no-repeat; } /***************** * End wikitables * ******************/ /************** * Preferences * ***************/ .mw-prefs-tabs-wrapper.oo-ui-panelLayout-framed, .mw-prefs-tabs > .oo-ui-menuLayout-content > .oo-ui-indexLayout-stackLayout > .oo-ui-tabPanelLayout { border: none; } .oo-ui-tabSelectWidget-framed { background-color: transparent; border-bottom: 1px solid var(--wiki-accent-color); } .oo-ui-tabSelectWidget-framed .oo-ui-tabOptionWidget.oo-ui-widget-enabled, .oo-ui-tabSelectWidget-framed .oo-ui-tabOptionWidget.oo-ui-widget-enabled:hover { background-color: color-mix(in srgb, var(--wiki-accent-label-color) 75%, transparent); color: var(--wiki-accent-color); } .oo-ui-tabSelectWidget-framed .oo-ui-tabOptionWidget.oo-ui-widget-enabled:hover { color: var(--wiki-accent-color--hover); } .oo-ui-tabSelectWidget-framed .oo-ui-tabOptionWidget.oo-ui-optionWidget-selected, .oo-ui-tabSelectWidget-framed .oo-ui-tabOptionWidget.oo-ui-widget-enabled.oo-ui-optionWidget-selected:hover { background-color: var(--wiki-accent-color); color: var(--wiki-accent-label-color); } .oo-ui-tabSelectWidget-framed .oo-ui-tabOptionWidget.oo-ui-optionWidget-selected .oo-ui-labelElement-label { border-bottom: none; } #preferences .mw-htmlform-submit-buttons { background-color: var(--wiki-content-background-color--secondary); border-color: var(--wiki-content-border-color); } .oo-ui-dropdownWidget.oo-ui-widget-enabled .oo-ui-dropdownWidget-handle, .oo-ui-dropdownInputWidget.oo-ui-widget-enabled, .oo-ui-textInputWidget .oo-ui-inputWidget-input, .oo-ui-textInputWidget.oo-ui-widget-enabled .oo-ui-inputWidget-input[readonly]:not(.oo-ui-pendingElement-pending) { background-color: var(--wiki-content-background-color--secondary); color: var(--wiki-content-text-color); border-color: var(--wiki-content-border-color); } .oo-ui-pendingElement-pending { background-color: var(--wiki-content-background-color--secondary); background-image: linear-gradient(135deg, var(--wiki-content-background-color) 25%, transparent 25%, transparent 50%, var(--wiki-content-background-color) 50%, var(--wiki-content-background-color) 75%, transparent 75%, transparent); } .oo-ui-dropdownInputWidget.oo-ui-widget-enabled select { color: var(--wiki-content-text-color); border-color: var(--wiki-content-border-color) } .view-dark .oo-ui-inputWidget-input.oo-ui-indicator-down { background-image: url("data:image/svg+xml,%3Csvg xmlns=%22http://www.w3.org/2000/svg%22 width=%2212%22 height=%2212%22 viewBox=%220 0 12 12%22%3E%3Ctitle%3E down %3C/title%3E%3Cg fill=%22%23fff%22%3E%3Cpath d=%22M9.9 2.9 6 6.8 2.1 2.9 1 4l5 5 5-5z%22/%3E%3C/g%3E%3C/svg%3E"); } .oo-ui-dropdownInputWidget.oo-ui-widget-enabled select:hover { color: var(--wiki-content-text-mix-color); border-color: var(--wiki-accent-color); } .oo-ui-dropdownInputWidget.oo-ui-widget-enabled select:active { color: var(--wiki-content-dynamic-color); border-color: var(--wiki-accent-color) } .oo-ui-dropdownInputWidget select option, .oo-ui-dropdownInputWidget select optgroup { color: #000; } .oo-ui-dropdownWidget.oo-ui-widget-enabled .oo-ui-dropdownWidget-handle:hover, .oo-ui-dropdownWidget.oo-ui-widget-enabled .oo-ui-dropdownWidget-handle:focus, .oo-ui-dropdownWidget.oo-ui-widget-enabled .oo-ui-dropdownWidget-handle:active, .oo-ui-dropdownInputWidget.oo-ui-widget-enabled:hover, .oo-ui-dropdownInputWidget.oo-ui-widget-enabled:focus, .oo-ui-dropdownInputWidget.oo-ui-widget-enabled:active, .oo-ui-textInputWidget.oo-ui-widget-enabled:hover .oo-ui-inputWidget-input, .oo-ui-textInputWidget.oo-ui-widget-enabled .oo-ui-inputWidget-input:focus, .oo-ui-textInputWidget.oo-ui-widget-enabled:active .oo-ui-inputWidget-input, .oo-ui-textInputWidget.oo-ui-widget-enabled:hover .oo-ui-inputWidget-input:focus { background-color: var(--wiki-content-background-color--secondary); color: var(--wiki-content-text-color); border-color: var(--wiki-accent-color); box-shadow: none; } .oo-ui-radioInputWidget [type="radio"] + span { background-color: var(--wiki-content-dynamic-color--inverted); } .oo-ui-radioInputWidget.oo-ui-widget-enabled [type="radio"]:checked + span, .oo-ui-radioInputWidget.oo-ui-widget-enabled [type="radio"]:hover + span { border-color: color-mix(in srgb, var(--wiki-accent-color) 90%, transparent); } .oo-ui-radioInputWidget.oo-ui-widget-enabled [type="radio"]:checked:hover + span { border-color: var(--wiki-accent-color); } .oo-ui-radioInputWidget.oo-ui-widget-enabled [type="radio"]:active + span, .oo-ui-radioInputWidget.oo-ui-widget-enabled [type="radio"]:checked:active + span { background-color: color-mix(in srgb, var(--wiki-accent-color) 50%, transparent); border-color: color-mix(in srgb, var(--wiki-accent-color) 50%, transparent); } .oo-ui-radioInputWidget.oo-ui-widget-enabled [type="radio"]:checked:focus + span::before { border-color: var(--wiki-content-dynamic-color--inverted); } .oo-ui-radioInputWidget.oo-ui-widget-enabled [type="radio"]:checked:active + span { border-color: color-mix(in srgb, var(--wiki-accent-color) 50%, transparent); box-shadow: inset 0 0 0 1px color-mix(in srgb, var(--wiki-accent-color) 50%, transparent); } .oo-ui-menuOptionWidget.oo-ui-widget-enabled.oo-ui-optionWidget { color: var(--wiki-content-text-color); border-color: var(--wiki-content-text-mix-color); } .oo-ui-menuOptionWidget.oo-ui-optionWidget.oo-ui-optionWidget-selected, .oo-ui-menuOptionWidget.oo-ui-optionWidget.oo-ui-optionWidget-highlighted, .oo-ui-menuOptionWidget.oo-ui-optionWidget.oo-ui-optionWidget-highlighted.oo-ui-optionWidget-selected, .oo-ui-dropdownWidget.oo-ui-widget-enabled.oo-ui-dropdownWidget-open .oo-ui-dropdownWidget-handle { background-color: color-mix(in srgb, var(--wiki-accent-color) 15%, transparent); color: var(--wiki-content-text-color); } .oo-ui-menuOptionWidget.oo-ui-optionWidget-selected.oo-ui-menuOptionWidget.oo-ui-optionWidget-highlighted, .oo-ui-menuOptionWidget.oo-ui-optionWidget-pressed.oo-ui-menuOptionWidget.oo-ui-optionWidget-highlighted { background-color: color-mix(in srgb, var(--wiki-accent-color) 10%, transparent); color: var(--wiki-accent-color); } .mw-prefs-tabs.mw-prefs-tabs-searching .oo-ui-tabPanelLayout.mw-prefs-search-matched > fieldset > legend { background: var(--wiki-content-background-color--secondary); } .mw-prefs-search-highlight { background-color: color-mix(in srgb, var(--wiki-accent-color) 7%, transparent) !important; outline-color: color-mix(in srgb, var(--wiki-accent-color) 7%, transparent) !important; } /**************** * End preferences * *****************/ /*************** * Page history * ****************/ #pagehistory li { background-color: transparent; border: none; } #pagehistory li.selected { background-color: var(--wiki-content-background-color--secondary); border: 1px dashed var(--wiki-content-border-color); color: var(--wiki-content-text-color); } .diff td.diff-addedline { background-color: var(--wiki-content-background-color); border-color: var(--wiki-success-color); border-width: 1px 1px 1px 4px; } .diff td.diff-addedline .diffchange { background-color: var(--wiki-success-color); color: var(--wiki-success-label-color); } .diff td.diff-deletedline { background-color: var(--wiki-content-background-color); border-color: var(--wiki-alert-color); border-width: 1px 1px 1px 4px; } .diff td.diff-deletedline .diffchange { background-color: var(--wiki-alert-color); color: var(--wiki-alert-label-color) } .diff td.diff-context { background: color-mix(in srgb, var(--wiki-content-text-mix-color-95) 80%, var(--wiki-content-background-color)); border-color: var(--wiki-neutral-color, var(--wiki-content-text-mix-color)); /* fallback for backwards compatibility */ color: var(--wiki-content-text-color); } .diff-marker a.mw-diff-movedpara-right { color: transparent; } .diff-marker a.mw-diff-movedpara-right:hover:after { opacity: .75; } .diff-marker a.mw-diff-movedpara-right:after { color: var(--wiki-content-text-color); content: "\21a9"; } .diff-marker a.mw-diff-movedpara-left { color: transparent; } .diff-marker a.mw-diff-movedpara-left:hover:after { opacity: .75; } .diff-marker a.mw-diff-movedpara-left:after { color: var(--wiki-content-text-color); content: "\21aa"; } .mw-plusminus-neg { color: var(--wiki-alert-color); } .mw-plusminus-null { color: var(--wiki-neutral-color, var(--wiki-content-text-mix-color)); /* fallback for backwards compatibility */ } .mw-plusminus-pos { color: var(--wiki-success-color); } .updatedmarker { background-color: color-mix(in srgb, var(--wiki-success-color) 25%, transparent); color: var(--wiki-content-text-color); } li span.deleted, span.history-deleted { color: var(--wiki-content-text-mix-color); } span.mw-history-suppressed { /* overrides above, since suppressed is also deleted */ color: var(--wiki-content-text-color); } /* inline diff (1.41) */ .mw-diff-inline-header { border-bottom: 1px solid var(--wiki-content-border-color); } .mw-diff-inline-added ins, .mw-diff-inline-changed ins, .mw-diff-inline-moved ins, .mw-diff-table-prefix .mw-diff-inline-legend .mw-diff-inline-legend-ins, .mw-diff-inline-added.mw-diff-empty-line::after, .mw-inline-diff-newline::after { background: color-mix(in srgb, var(--wiki-success-color) 90%, transparent); color: var(--wiki-success-label-color); display: inline-block; } .mw-diff-inline-added.mw-diff-empty-line::after, .mw-diff-inline-deleted.mw-diff-empty-line::after, .mw-inline-diff-newline::after { padding: 0.4em 0; } .mw-diff-inline-deleted del, .mw-diff-inline-changed del, .mw-diff-inline-moved del, .mw-diff-table-prefix .mw-diff-inline-legend .mw-diff-inline-legend-del, .mw-diff-inline-deleted.mw-diff-empty-line::after { background: color-mix(in srgb, var(--wiki-alert-color) 90%, transparent); color: var(--wiki-alert-label-color); display: inline-block; } .mw-diff-movedpara-left::after, .mw-diff-movedpara-right::after { color: var(--wiki-content-text-color); } .ve-ui-diffElement-hasDescriptions .ve-ui-diffElement-content { border-right-color: var(--wiki-content-border-color); } .ve-ui-diffElement-attributeChange { color: var(--wiki-content-text-mix-color); } .ve-ui-diffElement-attributeChange ins { background-color: color-mix(in srgb, var(--wiki-success-color) 90%, transparent); box-shadow: 0 0 0 1px color-mix(in srgb, var(--wiki-success-color) 90%, transparent); color: var(--wiki-success-label-color); } .ve-ui-diffElement-attributeChange del { background-color: color-mix(in srgb, var(--wiki-alert-color) 90%, transparent); box-shadow: 0 0 0 1px color-mix(in srgb, var(--wiki-alert-color) 90%, transparent); color: var(--wiki-alert-label-color); } .ve-ui-diffElement-highlight { outline-color: color-mix(in srgb, var(--wiki-accent-color) 50%, transparent); } .ve-ui-changeDescriptionsSelectWidget > .oo-ui-optionWidget-highlighted { background: color-mix(in srgb, var(--wiki-accent-color) 15%, transparent); } /* Edit conflict */ .mw-twocolconflict-split-tour-image-dual-column-view-1 { filter: var(--wiki-icon-general-filter); } .mw-twocolconflict-split-tour-image-blue-dot { filter: brightness(0) var(--wiki-icon-to-link-filter); } .mw-pulsating-dot::before, .mw-pulsating-dot::after { background-color: var(--wiki-content-link-color); } .mw-twocolconflict-split-current-version-header .mw-twocolconflict-revision-label { background-color: var(--wiki-alert-color); color: var(--wiki-alert-label-color); } .mw-twocolconflict-special-your-version-header .mw-twocolconflict-revision-label, .mw-twocolconflict-split-your-version-header .mw-twocolconflict-revision-label { background-color: var(--wiki-success-color); color: var(--wiki-success-label-color); } .mw-twocolconflict-single-column.mw-twocolconflict-split-copy, .mw-twocolconflict-split-column.mw-twocolconflict-split-copy { border-color: var(--wiki-neutral-color, var(--wiki-content-text-mix-color)); /* fallback for backwards compatibility */ background-color: var(--wiki-content-text-mix-color-95); } .mw-twocolconflict-single-column .mw-twocolconflict-split-collapsed .mw-twocolconflict-split-fade, .mw-twocolconflict-split-column .mw-twocolconflict-split-collapsed .mw-twocolconflict-split-fade { background-image: linear-gradient(transparent, var(--wiki-content-text-mix-color-95)); } .mw-twocolconflict-single-column, .mw-twocolconflict-split-column { background-color: var(--wiki-content-background-color); color: var(--wiki-content-text-color); } .mw-twocolconflict-single-column.mw-twocolconflict-split-unselected, .mw-twocolconflict-split-column.mw-twocolconflict-split-unselected { color: color-mix(in srgb, var(--wiki-content-text-color) 80%, transparent); } .mw-twocolconflict-single-column.mw-twocolconflict-split-unselected.mw-twocolconflict-split-delete, .mw-twocolconflict-split-column.mw-twocolconflict-split-unselected.mw-twocolconflict-split-delete { border-color: color-mix(in srgb, var(--wiki-alert-color) 40%, transparent); } .mw-twocolconflict-single-column.mw-twocolconflict-split-delete, .mw-twocolconflict-split-column.mw-twocolconflict-split-delete { border-color: var(--wiki-alert-color); } .mw-twocolconflict-single-column.mw-twocolconflict-split-unselected.mw-twocolconflict-split-add, .mw-twocolconflict-split-column.mw-twocolconflict-split-unselected.mw-twocolconflict-split-add { border-color: color-mix(in srgb, var(--wiki-success-color) 40%, transparent); } .mw-twocolconflict-single-column.mw-twocolconflict-split-add, .mw-twocolconflict-split-column.mw-twocolconflict-split-add { border-color: var(--wiki-success-color); } .mw-twocolconflict-single-column.mw-twocolconflict-split-unselected del.mw-twocolconflict-diffchange, .mw-twocolconflict-split-column.mw-twocolconflict-split-unselected del.mw-twocolconflict-diffchange { background-color: color-mix(in srgb, var(--wiki-alert-color) 30%, transparent); } .mw-twocolconflict-single-column.mw-twocolconflict-split-unselected del.mw-twocolconflict-diffchange, .mw-twocolconflict-split-column.mw-twocolconflict-split-unselected del.mw-twocolconflict-diffchange, .mw-twocolconflict-single-column del.mw-twocolconflict-diffchange, .mw-twocolconflict-split-column del.mw-twocolconflict-diffchange { background-color: var(--wiki-alert-color); color: var(--wiki-alert-label-color); } .mw-twocolconflict-single-column.mw-twocolconflict-split-unselected ins.mw-twocolconflict-diffchange, .mw-twocolconflict-split-column.mw-twocolconflict-split-unselected ins.mw-twocolconflict-diffchange, .mw-twocolconflict-single-column ins.mw-twocolconflict-diffchange, .mw-twocolconflict-split-column ins.mw-twocolconflict-diffchange { background-color: var(--wiki-success-color); color: var(--wiki-success-label-color); } .mw-twocolconflict-split-selection > div:nth-child(2) .oo-ui-radioInputWidget.oo-ui-widget-enabled [type="radio"]:checked + span, .mw-twocolconflict-split-selection > div:nth-child(2) .oo-ui-radioInputWidget.oo-ui-widget-enabled [type="radio"]:active + span, .mw-twocolconflict-split-selection > div:nth-child(2) .oo-ui-radioInputWidget [type="radio"] + span { border-color: color-mix(in srgb, var(--wiki-success-color) 80%, transparent); background: color-mix(in srgb, var(--wiki-success-color) 10%, transparent); } .mw-twocolconflict-split-selection > div:nth-child(2) .oo-ui-radioInputWidget.oo-ui-widget-enabled [type="radio"]:active + span, .mw-twocolconflict-split-selection > div:nth-child(2) .oo-ui-radioInputWidget [type="radio"] + span { border-color: color-mix(in srgb, var(--wiki-success-color) 90%, transparent); background: color-mix(in srgb, var(--wiki-success-color) 10%, transparent); } .mw-twocolconflict-split-selection > div:nth-child(1) .oo-ui-radioInputWidget.oo-ui-widget-enabled [type="radio"]:checked + span, .mw-twocolconflict-split-selection > div:nth-child(1) .oo-ui-radioInputWidget.oo-ui-widget-enabled [type="radio"]:active + span, .mw-twocolconflict-split-selection > div:nth-child(1) .oo-ui-radioInputWidget [type="radio"] + span { border-color: color-mix(in srgb, var(--wiki-alert-color) 90%, transparent); background: color-mix(in srgb, var(--wiki-alert-color) 10%, transparent); } .mw-twocolconflict-split-editable .mw-twocolconflict-split-editor { color: var(--wiki-content-text-color); } /**/ /******************* * End page history * ********************/ /******************** * Table of contents * *********************/ #toc, .toc, .toccolours, .mw-warning { background: var(--wiki-content-toc-background, var(--wiki-content-background-color--secondary)); border-width: var(--wiki-content-toc-border-width, 1px); border-style: var(--wiki-content-toc-border-style, solid); border-color: var(--wiki-content-toc-border-color, var(--wiki-content-border-color)); border-radius: var(--wiki-content-toc-border-radius, 0px); border-image: var(--wiki-content-toc-border-image, none); box-shadow: var(--wiki-content-toc-box-shadow, none); } #mw-toc-heading { border: 0; } .toctogglelabel { color: var(--wiki-content-link-color); } .tocnumber { color: var(--wiki-content-text-color); } /************************ * End table of contents * *************************/ /************* * Thumbnails * **************/ img.thumbborder { border: 1px solid var(--wiki-content-border-color); padding: 5px; } div.thumbinner { background-color: var(--wiki-content-background-color--secondary); border-color: var(--wiki-content-border-color); } li.gallerybox div.thumb { background-color: var(--wiki-content-background-color--secondary); border: 1px solid var(--wiki-content-border-color); } html .thumbimage { background-color: unset; border: 1px solid var(--wiki-content-border-color); } .thumb, .thumb .thumbinner, .thumb .thumbimage { max-width: 100%; box-sizing: border-box; } .thumb .thumbimage:not(audio) { height: auto; } body.skin--responsive .mw-parser-output .thumb .thumbinner > .thumbcaption { width: revert; } /* packed-overlay and packed-hover modes for galleries */ ul.mw-gallery-packed-hover li.gallerybox:hover div.gallerytextwrapper, ul.mw-gallery-packed-overlay li.gallerybox div.gallerytextwrapper, ul.mw-gallery-packed-hover li.gallerybox.mw-gallery-focused div.gallerytextwrapper { background: color-mix(in srgb, var(--wiki-content-dynamic-color--inverted) 65%, transparent); } /* for non-thumbnail left floaters, increased margin from 0.5em to account for <ul> */ div.floatleft, table.floatleft { margin-right: 1.4em; } /* Responsive floating thumbnails */ @media screen and (max-width: 720px) { div.tright, div.floatright, div.tleft, div.floatleft { float: none; margin: 0 auto; width: fit-content; } } /***************** * End thumbnails * ******************/ /************** * Wiki editor * ***************/ #wpTextbox0 { /* need !important here to override inline styling */ background-color: var(--wiki-content-background-color) !important; } .wikiEditor-ui { border: none; } .wikiEditor-ui .wikiEditor-ui-top, .wikiEditor-ui .wikiEditor-ui-view { border-color: var(--wiki-content-border-color); } .wikiEditor-ui-toolbar { background: var(--wiki-content-background-color--secondary); } .wikiEditor-ui-toolbar .group, .wikiEditor-ui-toolbar .section-secondary .group { border-color: var(--wiki-content-border-color); } .wikiEditor-ui-toolbar .tabs span.tab a, .wikiEditor-ui-toolbar .tabs span.tab a:visited, .wikiEditor-ui-toolbar .tabs span.tab a.current, .wiikiEditor-ui-toolbar .tabs span.tab a.current:visited, .wikiEditor-ui-toolbar .booklet .index .current { color: var(--wiki-content-link-color); } .wikiEditor-ui-toolbar .group .tool-select .options { background: var(--wiki-content-background-color--secondary); border: 1px solid var(--wiki-content-border-color); } .wikiEditor-ui-toolbar .group .tool-select .options .option { color: var(--wiki-content-text-color); } .wikiEditor-ui-toolbar .group .tool-select .menu .options .option:hover { background-color: var(--wiki-content-background-color); } .wikiEditor-ui-toolbar .tabs span.tab a::before, .wikiEditor-ui-toolbar .group .tool-select .label::after { filter: var(--wiki-icon-general-filter); } .wikiEditor-ui-toolbar .group .label, .wikiEditor-ui-toolbar .group .tool-select .label, .wikiEditor-ui-toolbar .page-table th, .wikiEditor-ui-toolbar .page-table td, .wikiEditor-ui-toolbar .page-characters div span, .wikiEditor-ui-toolbar .booklet .index div { color: var(--wiki-content-text-color); } .wikiEditor-ui-toolbar .booklet > .index > :hover { background-color: var(--wiki-content-background-color--secondary); } .wikiEditor-ui-toolbar .page-characters div span { border: 1px solid var(--wiki-content-border-color); } .wikiEditor-ui-toolbar .sections .section, .wikiEditor-ui-toolbar .booklet .pages, .wikiEditor-ui-toolbar .booklet .index .current, .wikiEditor-ui-toolbar .page-characters div span:hover { background-color: color-mix(in srgb, var(--wiki-content-dynamic-color) 5%, transparent); } .wikiEditor-ui-toolbar .sections .section { border-top: 1px solid var(--wiki-content-border-color); } .wikiEditor-ui-toolbar .page-characters div span:hover { border-color: var(--wiki-content-border-color); } .wikiEditor-ui-toolbar .page-table td { border-top: 1px solid var(--wiki-content-border-color); } .wikiEditor-ui-tabs div a { background: #9A647F; display: inline-block; } .wikiEditor-ui-tabs div.current { border-bottom: 1px solid #3B3352; } .wikiEditor-ui-tabs div.current a { font-weight: bold; } .wikiEditor-ui-tabs { border-left: 1px solid #3B3352; border-top: 1px solid #3B3352; } .wikiEditor-ui-text { background-color: var(--wiki-content-dynamic-color--inverted); } .wikiEditor-preview-contents { background: transparent; background-color: rgba(255, 255, 255, 0.2); border-color: #3B3352; border-style: solid; border-width: 0 1px 1px; } .wikiEditor-ui-controls { background: transparent; } .wikiEditor-preview-contents, .wikiEditor-preview-loading { background-color: transparent; } .mw-wikiEditor-InsertLink-TitleInputField .oo-ui-messageWidget, .mw-widget-titleWidget-menu .mw-widget-titleOptionWidget-description { color: var(--wiki-content-text-mix-color); } .wikiEditor-toolbar-dialog { max-width: 100%; box-sizing: border-box; } .wikiEditor-toolbar-dialog .ui-dialog-content input[type='text']::placeholder { color: var(--wiki-content-text-mix-color); } .ext-WikiEditor-ResizingDragBar { background-color: var(--wiki-content-background-color--secondary); } .ext-WikiEditor-ResizingDragBar-ns { border-color: var(--wiki-content-border-color); } .ext-WikiEditor-ResizingDragBar span { background-color: var(--wiki-content-border-color); } .ext-WikiEditor-ResizingDragBar:hover span { background-color: var(--wiki-content-text-mix-color); } .ext-WikiEditor-twopanes-TwoPaneLayout .ext-WikiEditor-twopanes-pane1, .ext-WikiEditor-twopanes-TwoPaneLayout .ext-WikiEditor-twopanes-pane2 { border-color: var(--wiki-content-border-color); } /* creates a warning message about previewing sidebar edits */ .page-MediaWiki_Sidebar .wikiEditor-ui-bottom:has(.ext-WikiEditor-twopanes-TwoPaneLayout)::before { content:"Warning: Sidebar previews are not accurate. Please save to see your changes!"; background:var(--wiki-alert-color); display:block; text-align:center; color:var(--wiki-alert-label-color); } .ext-WikiEditor-realtimepreview-button.oo-ui-toggleWidget-on .oo-ui-labelElement-label { color: var(--wiki-accent-color); } .wikiEditor-ui-toolbar .group, .wikiEditor-ui-toolbar .section-secondary .group { border-color: var(--wiki-content-border-color); } .ext-WikiEditor-realtimepreview-button:hover { background-color: color-mix(in srgb, var(--wiki-accent-color) 15%, transparent); color: var(--wiki-accent-color); border-color: var(--wiki-accent-color); box-shadow: inset 0 0 3px var(--wiki-accent-color); } .ext-WikiEditor-realtimepreview-ErrorLayout { background-color: var(--wiki-content-background-color); } .ext-WikiEditor-image-realtimepreview-error { filter: var(--wiki-icon-general-filter); } .oo-ui-toggleButtonWidget.oo-ui-widget-enabled.oo-ui-buttonElement-frameless.oo-ui-toggleWidget-on .oo-ui-buttonElement-button { background-color: var(--wiki-content-background-color--secondary); } .ext-WikiEditor-reloadButton.oo-ui-buttonElement-framed.oo-ui-widget-enabled > .oo-ui-buttonElement-button, .ext-WikiEditor-reloadButton.oo-ui-buttonElement-framed.oo-ui-widget-enabled > .oo-ui-buttonElement-button:hover { background-color: var(--wiki-content-background-color); } .editOptions { background-color: var(--wiki-content-background-color--secondary); color: var(--wiki-content-text-color); border-color: var(--wiki-content-border-color); border-image: none; border-radius: 0 0 5px 5px; border-style: none solid solid; border-width: medium 1px 1px; } input#wpSummary { margin-bottom: 1em; margin-top: 1em; width: 80%; } .view-dark .ace_editor, .ace_editor { --ace-keywords: #CDA869; --ace-regexp: #E9C062; --ace-constants: #CF6A4C; --ace-illegal: #F8F8F8; --ace-deprecated: #D2A8A1; --ace-support: #9B859D; --ace-function: #DAD085; --ace-list: #F9EE98; --ace-variable: #7587A6; --ace-string: #8F9D6A; --ace-illegal-highlight: rgba(86, 45, 86, 0.75); --ace-step-highlight: #665200; --ace-multiselect-shadow: #141414; } .view-light .ace_editor { --ace-keywords: #00f; --ace-regexp: #036a07; --ace-constants: #c5060b; --ace-illegal: #f00; --ace-deprecated: #f00; --ace-support: #6d79de; --ace-function: #3c4c72; --ace-list: #b90690; --ace-variable: #318495; --ace-string: #036a07; --ace-illegal-highlight: rgba(255, 0, 0, 0.1); --ace-step-highlight: #fcff00; --ace-multiselect-shadow: #fff; } .ace_editor .ace_gutter { background: color-mix(in srgb, var(--wiki-content-dynamic-color--inverted) 85%, transparent); } .ace_gutter-cell { color: color-mix(in srgb, var(--wiki-content-dynamic-color) 40%, transparent); } .ace_editor .ace_print-margin { width: 1px; background: color-mix(in srgb, var(--wiki-content-dynamic-color--inverted) 75%, transparent); } .ace_editor { /* this image gradient hack effectively lets the element have 2 layers of background */ background-image: linear-gradient(var(--wiki-content-dynamic-color), var(--wiki-content-dynamic-color)); background-color: color-mix(in srgb, var(--wiki-content-dynamic-color--inverted) 93%, transparent); color: color-mix(in srgb, var(--wiki-content-dynamic-color) 93%, transparent); } .ace_editor .ace_cursor, .ace-monokai .ace_punctuation, .ace-monokai .ace_punctuation.ace_tag { color: var(--wiki-content-text-color); } .ace_editor .ace_marker-layer .ace_selection { background: color-mix(in srgb, var(--wiki-content-dynamic-color) 20%, transparent) } .ace_editor.ace_multiselect .ace_selection.ace_start { box-shadow: 0 0 3px 0px var(--ace-multiselect-shadow); } .ace_editor .ace_marker-layer .ace_step { background: var(--ace-step-highlight); } .ace_editor .ace_marker-layer .ace_active-line, .ace_editor .ace_gutter-active-line { background: color-mix(in srgb, var(--wiki-content-dynamic-color) 3.1%, transparent) } .ace-tm .ace_marker-layer .ace_selected-word { background: color-mix(in srgb, var(--wiki-content-dynamic-color) 5%, transparent); } .ace_editor .ace_marker-layer .ace_selection { background: color-mix(in srgb, var(--wiki-content-dynamic-color) 10%, transparent); } .ace_editor .ace_marker-layer .ace_selected-word { border: 1px solid color-mix(in srgb, var(--wiki-content-dynamic-color) 20%, transparent); } .ace_editor .ace_invisible { color: color-mix(in srgb, var(--wiki-content-dynamic-color) 25%, transparent); } .ace_editor .ace_keyword, .ace_editor .ace_meta { color: var(--ace-keywords); } .ace_editor .ace_constant, .ace_editor .ace_constant.ace_numeric, .ace_editor .ace_constant.ace_character, .ace_editor .ace_constant.ace_character.ace_escape, .ace_editor .ace_constant.ace_other, .ace_editor .ace_heading, .ace_editor .ace_markup.ace_heading, .ace_editor .ace_support.ace_constant { color: var(--ace-constants); } .ace_editor .ace_invalid.ace_illegal { color: var(--ace-illegal); background-color: var(--ace-illegal-highlight); } .ace_editor .ace_invalid.ace_deprecated { text-decoration: underline; font-style: italic; color: var(--ace-deprecated); } .ace_editor .ace_support, .ace_editor .ace_support.ace_type { color: var(--ace-support); } .ace_editor .ace_fold { background-color: color-mix(in srgb, var(--wiki-content-dynamic-color) 10%, transparent); border-color: color-mix(in srgb, var(--wiki-content-dynamic-color) 10%, transparent); } .ace_editor .ace_support.ace_function { color: var(--ace-function); } .ace_editor .ace_list, .ace_editor .ace_markup.ace_list, .ace_editor .ace_storage { color: var(--ace-list); } .ace_editor .ace_entity.ace_name.ace_function, .ace_editor .ace_meta.ace_tag, .ace_editor .ace_variable { color: var(--ace-variable); } .ace_editor .ace_string { color: var(--ace-string); } .ace_editor .ace_string.ace_regexp { color: var(--ace-regexp); } .ace_editor .ace_comment { font-style: italic; color: color-mix(in srgb, var(--wiki-content-dynamic-color) 30%, transparent); } .ace_editor .ace_xml-pe { color: color-mix(in srgb, var(--wiki-content-dynamic-color) 28%, transparent); } .ace_editor .ace_indent-guide { background: none; box-shadow: 1px 0 0 color-mix(in srgb, var(--wiki-content-dynamic-color) 20%, transparent); } .ace_search { background-color: var(--wiki-content-background-color--secondary); color: var(--wiki-content-text-color); border: 1px solid var(--wiki-content-border-color); } .ace_search_field { background-color: var(--wiki-content-background-color--secondary); border: 1px solid var(--wiki-content-border-color); color: var(--wiki-content-text-mix-color); } .ace_button { color: var(--wiki-content-text-color); border: 1px solid var(--wiki-content-border-color); } .ace_button:hover { background-color: var(--wiki-accent-color--hover); color: var(--wiki-accent-label-color); } .ace_button.checked { background-color: var(--wiki-accent-color); color: var(--wiki-accent-label-color); } .ace_searchbtn { background-color: var(--wiki-accent-color); color: var(--wiki-accent-label-color); border: 1px solid var(--wiki-content-border-color); } .ace_searchbtn:hover { background-color: var(--wiki-accent-color--hover); color: var(--wiki-accent-label-color); } .ace_searchbtn.prev::after, .ace_searchbtn.next::after { border-color: var(--wiki-accent-label-color); } .ace_searchbtn_close { filter: var(--wiki-icon-general-filter); } .wikiEditor-ui .codeEditor-status { background-color: var(--wiki-content-background-color--secondary); border-color: var(--wiki-content-border-color); } .mw-editform #wpTextbox1 { background: color-mix(in srgb, var(--wiki-content-background-color) 50%, transparent); color: var(--wiki-content-text-color); } .view-dark .ext-codemirror-wrapper, .ext-codemirror-wrapper { --codemirror-yellow: #ffd700; --codemirror-light-blue: #adf; --codemirror-blue: #08f; --codemirror-green: #290; --codemirror-red: #f50; --codemirror-dark-red: #dd1616; --codemirror-purple: #CD4EF9; --codemirror-pink: #e0e; --codemirror-light-gray: #eee; --codemirror-gray: #84a0a0; } .view-light .ext-codemirror-wrapper { --codemirror-yellow: #9e8500; --codemirror-light-blue: #008ae7; --codemirror-blue: #0085f9; --codemirror-green: #290; --codemirror-red: #ef4f00; --codemirror-dark-red: #a11; --codemirror-purple: #80c; --codemirror-pink: #ed00ed; --codemirror-light-gray: #858585; --codemirror-gray: #6b8a8a; } .ext-codemirror-wrapper { background-color: color-mix(in srgb, var(--wiki-content-background-color) 35%, transparent); color: var(--wiki-content-text-color) } .cm-editor .cm-selectionBackground, .cm-editor.cm-focused > .cm-scroller > .cm-selectionLayer .cm-selectionBackground { background: color-mix(in srgb, var(--wiki-accent-color) 30%, transparent); } .cm-mw-keyword { color: var(--codemirror-purple) } .cm-mw-def { color: var(--codemirror-blue) } .cm-mw-variable-2 { color: var(--codemirror-light-blue) } .cm-mw-string { color: var(--codemirror-red) } .cm-mw-atom { color: var(--codemirror-pink) } .cm-mw-number { color: var(--codemirror-green) } .cm-mw-matching { background-color: var(--codemirror-yellow) } .cm-mw-skipformatting { background-color: var(--codemirror-light-blue) } .cm-mw-list { color: var(--codemirror-blue) } .cm-mw-doubleUnderscore, .cm-mw-hr, .cm-mw-signature { background-color: var(--wiki-content-background-color--secondary); color: var(--codemirror-blue) } .cm-mw-indenting { color: var(--codemirror-blue) } .cm-mw-mnemonic { color: var(--codemirror-green) } .cm-mw-comment { color: var(--codemirror-gray) } .cm-mw-apostrophes-bold, .cm-mw-apostrophes-italic, .cm-mw-section-header { color: var(--codemirror-blue) } .cm-mw-template, .cm-mw-template-argument-name, .cm-mw-template-bracket, .cm-mw-template-delimiter, .cm-mw-template-name { color: var(--codemirror-purple); } .cm-mw-templatevariable, .cm-mw-templatevariable-bracket, .cm-mw-templatevariable-delimiter, .cm-mw-templatevariable-name { color: var(--codemirror-red) } .cm-mw-parserfunction-bracket, .cm-mw-parserfunction-delimiter, .cm-mw-parserfunction-name { color: var(--codemirror-dark-red) } .cm-mw-exttag-attribute, .cm-mw-exttag-bracket, .cm-mw-exttag-name, .cm-mw-htmltag-attribute, .cm-mw-htmltag-bracket, .cm-mw-htmltag-name { color: var(--codemirror-green) } .cm-mw-link, .cm-mw-link-pagename { color: var(--wiki-content-link-color) } .cm-mw-link-tosection { color: var(--codemirror-blue) } .cm-mw-extlink, .cm-mw-extlink-bracket, .cm-mw-extlink-protocol, .cm-mw-free-extlink, .cm-mw-free-extlink-protocol, .cm-mw-link-bracket, .cm-mw-link-delimiter { color: var(--wiki-content-link-color) } .cm-mw-table-bracket, .cm-mw-table-definition, .cm-mw-table-delimiter { color: var(--codemirror-pink) } .cm-mw-matchingbracket { background-color: var(--wiki-content-background-color--secondary); box-shadow: inset 0 0 1px 1px var(--wiki-content-link-color); font-weight: bold; } .cm-editor .cm-tooltip-autocomplete ul li[aria-selected] { background: color-mix(in srgb, var(--wiki-content-link-color) 15%, var(--wiki-content-background-color)); color: var(--wiki-content-link-color); } /* VisualEditor: Fix broken toolbar layout */ .oo-ui-toolbar { clear: none; display: flex; /* fix overflow issue at narrow widths */ } .ve-ui-toolbar > .oo-ui-toolbar-bar{ width: 100%; /* fix overflow issue at narrow widths */ } .ve-ui-toolbar.ve-ui-toolbar-floating > .oo-ui-toolbar-bar{ width: auto; /* fix overflow issue at narrow widths */ } .ve-init-mw-desktopArticleTarget-toolbar-open > .oo-ui-toolbar-bar > div:nth-child(4) { display: none; } .ve-ui-toolbar-floating > .oo-ui-toolbar-bar { top: var(--wikigg-header-scroll-height); } .oo-ui-toolbar-bar .oo-ui-toolbar-bar, .ve-area-wrapper .oo-ui-toolbar-bar { background-color: var(--wiki-content-background-color--secondary); } .ve-init-mw-desktopArticleTarget-originalContent .content-body { clear: right; } /* fix a lot of empty space from TemplateData when using VE Source */ .tdg-editscreen-main.mw-body-content::after { display: none; } /************* * End editor * **************/ /**************** * Tabber styles * *****************/ .tabber__header { box-shadow: inset 0 -1px 0 0 var(--wiki-content-border-color); } .tabber__tab, .tabber__tab:visited { color: var(--wiki-content-text-color); } .tabber__tab:hover, .tabber__tab:hover:visited, .tabber__tab[aria-selected="true"], .tabber__tab[aria-selected="true"]:visited { color: var(--wiki-content-link-color); } .tabber__tab[aria-selected="true"] { box-shadow: 0 -2px 0 var(--wiki-content-link-color) inset; } .tabber__header__prev::after, .tabber__header__next::after { filter: var(--wiki-icon-general-filter); } /******************** * End Tabber styles * *********************/ /*************************************** * Various fixes for multi-theme Vector * ****************************************/ :focus, :focus-visible { outline-color: var(--wiki-accent-color) } :focus-visible { outline-style: solid; } .oo-ui-iconElement-icon { filter: var(--wiki-icon-to-link-filter); } .oo-ui-iconElement-icon.oo-ui-icon-reload { filter: brightness(0) var(--wiki-icon-to-link-filter); } fieldset { border-color: var(--wiki-content-border-color); } hr { background-color: var(--wiki-content-border-color); } .CategoryTreeToggle { color: var(--wiki-content-link-color); } input, select { background-color: var(--wiki-content-background-color--secondary); border: 1px solid var(--wiki-content-border-color); color: var(--wiki-content-text-color); } input:hover, input:focus, input:active { background-color: var(--wiki-content-background-color--secondary); color: var(--wiki-content-text-color); border-color: var(--wiki-accent-color); box-shadow: none; } input:focus-visible { outline: 1px solid var(--wiki-accent-color); } input::file-selector-button, input[type="button"], input[type="submit"] { background-color: var(--wiki-accent-color); border-color: var(--wiki-accent-color); color: var(--wiki-accent-label-color); } .vector-body blockquote { border-color: var(--wiki-content-border-color); } /* category bar and filetoc */ .catlinks{ background: var(--wiki-content-catlinks-background, var(--wiki-content-background-color--secondary)); border-width: var(--wiki-content-catlinks-border-width, 1px); border-style: var(--wiki-content-catlinks-border-style, solid); border-color: var(--wiki-content-catlinks-border-color, var(--wiki-content-border-color)); border-radius: var(--wiki-content-catlinks-border-radius, 0px); border-image: var(--wiki-content-catlinks-border-image, none); box-shadow: var(--wiki-content-catlinks-box-shadow, none); } ul#filetoc { background: var(--wiki-content-filetoc-background, var(--wiki-content-background-color--secondary)); border-width: var(--wiki-content-filetoc-border-width, 1px); border-style: var(--wiki-content-filetoc-border-style, solid); border-color: var(--wiki-content-filetoc-border-color, var(--wiki-content-border-color)); border-radius: var(--wiki-content-filetoc-border-radius, 0px); border-image: var(--wiki-content-filetoc-border-image, none); box-shadow: var(--wiki-content-filetoc-box-shadow, none); } /**/ body .ui-dialog .ui-widget-header { /* we need an important here because the built-in styles have one :( */ background: var(--wiki-content-background-color) !important; border: 1px solid var(--wiki-content-border-color); color: var(--wiki-content-text-color); } .ui-widget-header .ui-dialog-titlebar-close .ui-icon-closethick { filter: var(--wiki-icon-general-filter); } .ui-widget-header .ui-dialog-titlebar-close.ui-state-hover { background: var(--wiki-content-background-color--secondary); border: 1px solid var(--wiki-content-border-color); } .ui-widget-content { background: var(--wiki-content-background-color--secondary); color: var(--wiki-content-text-color); border: 1px solid var(--wiki-content-border-color); } body .ui-button { /* we need an important here because the built-in styles have one. Vector is a mess */ background: var(--wiki-accent-color) !important; border-color: var(--wiki-accent-color) !important; color: var(--wiki-accent-label-color); } body .ui-button:hover, body .ui-button:focus, body .ui-button:active { /* we need an important here because we had to use some above */ background: var(--wiki-accent-color--hover) !important; border-color: var(--wiki-accent-color--hover) !important; color: var(--wiki-accent-label-color); } .ui-state-default, .ui-widget-content .ui-state-default, .ui-widget-header .ui-state-default { color: var(--wiki-accent-label-color); } .ui-state-focus { /* we need an important here because the built-in styles have one */ background: var(--wiki-accent-color) !important; color: var(--wiki-accent-label-color) !important; } .ui-menu .ui-menu-item a { color: var(--wiki-content-dynamic-color); } #contentSub, #contentSub2 { color: var(--wiki-content-text-mix-color); } #contentSub2:empty { display: none; } /* notifications ("your edit was saved", etc.) */ .mw-notification { background-color: var(--wiki-content-background-color--secondary); color: var(--wiki-content-text-color); border-color: var(--wiki-content-border-color); top: var(--wikigg-header-scroll-height); } .mw-notification .oo-ui-labelElement-label { color: var(--wiki-content-text-color); } .mw-notification .oo-ui-iconElement-icon { filter: unset; } /**/ .mime-type.has-warning { color: var(--wiki-content-text-color); } .oo-ui-image-warning.oo-ui-icon-alert, .mw-ui-icon-alert-warning::before { filter: drop-shadow(0 0 3px #000); } .oo-ui-image-invert.oo-ui-icon-subtract, .mw-ui-icon-subtract-invert::before, .oo-ui-image-invert.oo-ui-icon-add, .mw-ui-icon-add-invert::before { filter: brightness(0) var(--wiki-icon-to-link-filter); filter: var(--wiki-icon-general-filter); } .mw_metadata td, .mw_metadata th { border-color: var(--wiki-content-border-color); } .mw_metadata th { background-color: var(--wiki-content-background-color--secondary); } .mw_metadata td { background-color: var(--wiki-content-background-color); } .mw-datatable td, .mw-datatable th { background-color: var(--wiki-content-background-color); border-color: var(--wiki-content-border-color); } #mw-allmessagestable tbody:hover td, .mw-datatable tr:hover > td { background-color: var(--wiki-content-background-color--secondary); } #mw-allmessagestable .am_default { background-color: color-mix(in srgb, var(--wiki-accent-color) 80%, transparent); color: var(--wiki-accent-label-color); } #mw-allmessagestable .am_actual, #mw-allmessagestable tbody:hover .am_default { background-color: color-mix(in srgb, var(--wiki-accent-color) 60%, transparent); } #mw-allmessagestable .am_actual { color: var(--wiki-accent-label-color); } #mw-allmessagestable tbody:hover .am_actual { background-color: color-mix(in srgb, var(--wiki-accent-color) 50%, transparent); } .mw-datatable, .mw-json { background-color: var(--wiki-content-background-color); border-color: var(--wiki-content-border-color); color: inherit; } .mw-datatable > * > tr > th, .mw-datatable > tr > th, .mw-json > * > tr > th, .mw-json > tr > th { background-color: var(--wiki-content-background-color--secondary); border-color: var(--wiki-content-border-color); padding-bottom: 9px; padding-top: 9px; } .mw-datatable > * > tr > td, .mw-datatable > tr > td, .mw-json > * > tr > td, .mw-json > tr > td { border-color: var(--wiki-content-border-color); } .mw-json tr { background-color: inherit; } .mw-json .mw-json-single-value, .mw-json .mw-json-value, .mw-json .value { background: color-mix(in srgb, var(--wiki-success-color) 60%, transparent); } .mw-json .mw-json-empty { background: var(--wiki-content-background-color--secondary); } .mw-message-box, .mw-message-box-warning { background-color: var(--wiki-content-background-color--secondary); color: var(--wiki-content-text-color); } .mw-message-box-warning { border-color: var(--wiki-warning-color); border-width: 1px 1px 1px 10px; } .mw-destfile-warning { border-color: var(--wiki-warning-color); color: var(--wiki-content-text-color); background-color: color-mix(in srgb, var(--wiki-warning-color) 25%, transparent); } .wikitable *, .wikitable :after, .wikitable :before { -webkit-box-sizing: inherit; box-sizing: inherit; } .cargo-pagevalues-tableinfo { background-color: var(--wiki-content-background-color); border-bottom: 1px solid var(--wiki-content-border-color); top: 46px; position: static; /* override sticky in the built-in */ } .cargo-table-diagram .cargo-table-svg .node.entity-name rect { fill: var(--wiki-content-background-color--secondary); fill-opacity: 1; } .cargo-table-diagram .cargo-table-svg .node rect { stroke: var(--wiki-content-border-color); opacity: 1; } .cargo-table-diagram .cargo-table-svg .node text tspan { fill: var(--wiki-content-text-color); } table.cargoTable { color: var(--wiki-content-text-color); } table.cargoTable tbody td, table.cargoTable thead th { border: 1px solid var(--wiki-content-border-color); } table.cargoTable tr:hover { background-color: color-mix(in srgb, var(--wiki-accent-color) 25%, transparent); } table.cargoTable thead tr:nth-child(odd), table.cargoTable.noMerge thead tr:nth-child(odd) { background-color: var(--wiki-accent-color); } table.cargoTable tbody tr:nth-child(2n), table.cargoTable.noMerge tbody tr:nth-child(2n) { background-color: var(--wiki-content-background-color); } table.cargoTable tbody tr:nth-child(odd), table.cargoTable.noMerge tbody tr:nth-child(odd) { background-color: var(--wiki-content-background-color--secondary); } table.cargoTable th.headerSort { color: var(--wiki-accent-label-color); } table.cargoTable th.headerSort:hover { color: var(--wiki-accent-label-color); text-decoration: underline; } table.cargoTable th.headerSort::after { background-color: var(--wiki-accent-link-color); } #mw-content-text div.cargoReplacementTableInfo { background: var(--wiki-content-background-color--secondary); border: 1px solid var(--wiki-content-border-color); } .dataTables_wrapper .dataTables_length, .dataTables_wrapper .dataTables_filter, .dataTables_wrapper .dataTables_info, .dataTables_wrapper .dataTables_processing, .dataTables_wrapper .dataTables_paginate { color: var(--wiki-content-text-color); } table.dataTable tbody tr { background-color: var(--wiki-content-background-color); } table.dataTable.display tbody tr.odd > .sorting_1, table.dataTable.order-column.stripe tbody tr.odd > .sorting_1 { background-color: color-mix(in srgb, var(--wiki-content-background-color--secondary) 75%, transparent); } table.dataTable.stripe tbody tr.odd, table.dataTable.display tbody tr.odd, table.dataTable.display tbody tr.even > .sorting_1, table.dataTable.order-column.stripe tbody tr.even > .sorting_1 { background-color: color-mix(in srgb, var(--wiki-content-background-color--secondary) 50%, transparent); } table.dataTable.display tbody tr:hover > .sorting_1, table.dataTable.order-column.hover tbody tr:hover > .sorting_1 { background-color: color-mix(in srgb, var(--wiki-content-background-color) 75%, transparent); } table.dataTable.hover tbody tr:hover, table.dataTable.display tbody tr:hover { background-color: var(--wiki-content-background-color--secondary); } table.dataTable.row-border tbody th, table.dataTable.row-border tbody td, table.dataTable.display tbody th, table.dataTable.display tbody td { border-top: 1px solid var(--wiki-content-border-color); } .dataTables_wrapper .dataTables_paginate .paginate_button, .dataTables_wrapper .dataTables_paginate .paginate_button.disabled, .dataTables_wrapper .dataTables_paginate .paginate_button.disabled:hover, .dataTables_wrapper .dataTables_paginate .paginate_button.disabled:active { /* we need this !important to override a built-in one */ color: var(--wiki-content-text-mix-color) !important; } .dataTables_wrapper .dataTables_paginate .paginate_button.current, .dataTables_wrapper .dataTables_paginate .paginate_button.current:hover { /* we need this !important to override a built-in one */ color: var(--wiki-content-text-color) !important; border: 1px solid var(--wiki-content-border-color); background-color: var(--wiki-content-background-color); background: linear-gradient(to bottom, var(--wiki-content-background-color) 0%, var(--wiki-content-background-color--secondary) 100%); } div.drilldown-filters-wrapper { background-color: transparent; border: 1px solid var(--wiki-content-border-color); color: var(--wiki-content-text-color); } .action-pagevalues tr:nth-of-type(2n) { background-color: color-mix(in srgb, var(--wiki-content-background-color--secondary) 50%, transparent); } .action-pagevalues tr:hover { background-image: linear-gradient(color-mix(in srgb, var(--wiki-accent-color) 20%, transparent), color-mix(in srgb, var(--wiki-accent-color) 20%, transparent)); } div.specialCargoQuery-extraPane { background: var(--wiki-content-background-color); } .oo-ui-panelLayout-framed { border-color: var(--wiki-content-border-color); } .oo-ui-inputWidget-input + .oo-ui-image-invert.oo-ui-icon-check { background-image: none; } .oo-ui-inputWidget-input:checked + .oo-ui-image-invert.oo-ui-icon-check::before { position: absolute; width: 100%; height: 100%; top: 0; left: 0; background-image: url(/load.php?modules=oojs-ui-core.icons&image=check&variant=invert&format=rasterized&skin=vector&version=y9f1k); background-image: linear-gradient(transparent, transparent), url("data:image/svg+xml,%3Csvg xmlns=%22http://www.w3.org/2000/svg%22 width=%2220%22 height=%2220%22 viewBox=%220 0 20 20%22%3E%3Ctitle%3E check %3C/title%3E%3Cg fill=%22%23fff%22%3E%3Cpath d=%22M7 14.2 2.8 10l-1.4 1.4L7 17 19 5l-1.4-1.4z%22/%3E%3C/g%3E%3C/svg%3E"); content: ''; pointer-events: none; filter: var(--wiki-icon-general-filter); } .oo-ui-checkboxInputWidget [type="checkbox"] + span, .oo-ui-checkboxInputWidget.oo-ui-widget-enabled [type="checkbox"]:checked + span { filter: unset; background-color: color-mix(in srgb, var(--wiki-accent-color) 5%, transparent); border-color: color-mix(in srgb, var(--wiki-accent-color) 75%, transparent); } .oo-ui-checkboxInputWidget [type="checkbox"]:disabled + span { background-color: var(--wiki-content-text-mix-color); border-color: var(--wiki-content-text-mix-color); } .oo-ui-checkboxInputWidget.oo-ui-widget-enabled [type="checkbox"]:checked + span, .oo-ui-checkboxInputWidget.oo-ui-widget-enabled [type="checkbox"]:indeterminate + span, .oo-ui-checkboxInputWidget.oo-ui-widget-enabled [type="checkbox"]:hover + span { border-color: var(--wiki-accent-color); filter: unset; } .oo-ui-checkboxInputWidget.oo-ui-widget-enabled [type="checkbox"]:checked + span, .oo-ui-checkboxInputWidget.oo-ui-widget-enabled [type="checkbox"]:indeterminate + span { background-color: var(--wiki-accent-color); } .oo-ui-checkboxInputWidget.oo-ui-widget-enabled [type="checkbox"]:checked:focus + span, .oo-ui-checkboxInputWidget.oo-ui-widget-enabled [type="checkbox"]:indeterminate:focus + span { box-shadow: none; } .oo-ui-checkboxInputWidget.oo-ui-widget-enabled [type="checkbox"]:active + span { border-color: var(--wiki-accent-color); box-shadow: inset 0 0 0 1px var(--wiki-accent-color); } .oo-ui-checkboxInputWidget.oo-ui-widget-enabled [type="checkbox"]:focus + span { border-color: var(--wiki-accent-color); box-shadow: inset 0 0 0 1px var(--wiki-accent-color); outline: 1px solid transparent; } .oo-ui-checkboxInputWidget.oo-ui-widget-enabled [type="checkbox"]:checked + span, .oo-ui-checkboxInputWidget.oo-ui-widget-enabled [type="checkbox"]:indeterminate + span, .oo-ui-checkboxInputWidget.oo-ui-widget-enabled [type="checkbox"]:checked:focus + span { background-color: var(--wiki-accent-color); border-color: var(--wiki-accent-color); } .oo-ui-checkboxInputWidget.oo-ui-widget-enabled [type="checkbox"]:hover + span, .oo-ui-checkboxInputWidget.oo-ui-widget-enabled [type="checkbox"]:active + span, .oo-ui-checkboxInputWidget.oo-ui-widget-enabled [type="checkbox"]:focus + span, .oo-ui-checkboxInputWidget.oo-ui-widget-enabled [type="checkbox"]:checked:hover + span, .oo-ui-checkboxInputWidget.oo-ui-widget-enabled [type="checkbox"]:checked:active + span, .oo-ui-checkboxInputWidget.oo-ui-widget-enabled [type="checkbox"]:checked:focus + span, .oo-ui-checkboxInputWidget.oo-ui-widget-enabled [type="checkbox"]:indeterminate:hover + span, .oo-ui-checkboxInputWidget.oo-ui-widget-enabled [type="checkbox"]:indeterminate:active + span, .oo-ui-checkboxInputWidget.oo-ui-widget-enabled [type="checkbox"]:indeterminate:focus + span { background-color: color-mix(in srgb, var(--wiki-accent-color) 50%, transparent); border-color: var(--wiki-accent-color); } .oo-ui-checkboxInputWidget.oo-ui-widget-enabled [type="checkbox"]:active + span { background-color: color-mix(in srgb, var(--wiki-accent-color) 50%, transparent) } .oo-ui-image-invert.oo-ui-icon-check { background: none; position: relative; } .oo-ui-inputWidget-input:checked + .oo-ui-image-invert.oo-ui-icon-check::before { position: absolute; width: 100%; height: 100%; top: 0; left: 0; background-image: url(/load.php?modules=oojs-ui-core.icons&image=check&variant=invert&format=rasterized&skin=vector&version=y9f1k); background-image: linear-gradient(transparent, transparent), url("data:image/svg+xml,%3Csvg xmlns=%22http://www.w3.org/2000/svg%22 width=%2220%22 height=%2220%22 viewBox=%220 0 20 20%22%3E%3Ctitle%3E check %3C/title%3E%3Cg fill=%22%23fff%22%3E%3Cpath d=%22M7 14.2 2.8 10l-1.4 1.4L7 17 19 5l-1.4-1.4z%22/%3E%3C/g%3E%3C/svg%3E"); content: ''; pointer-events: none; filter: var(--wiki-icon-general-filter); } .oo-ui-indicatorElement-indicator { filter: var(--wiki-icon-to-link-filter); } .oo-ui-tagItemWidget.oo-ui-widget-enabled:not(.oo-ui-tagItemWidget-fixed) { background-color: var(--wiki-content-background-color--secondary); } .oo-ui-tagItemWidget.oo-ui-widget-enabled:hover { color: var(--wiki-content-text-color--hover); } .oo-ui-tagItemWidget.oo-ui-widget-enabled:focus { border-color: var(--wiki-accent-color); box-shadow: inset 0 0 0 1px var(--wiki-accent-color); } .oo-ui-tagItemWidget.oo-ui-widget-disabled { background-color: var(--wiki-content-background-color--secondary); color: var(--wiki-content-text-mix-color); border-color: var(--wiki-content-text-mix-color); } .client-js .mw-recentchanges-toplinks:not(.mw-recentchanges-toplinks-collapsed) { border-color: var(--wiki-content-border-color); } .mw-rcfilters-ui-savedLinksListWidget-placeholder.oo-ui-optionWidget .oo-ui-labelElement-label { color: var(--wiki-content-text-color); } .mw-rcfilters-ui-savedLinksListWidget-menu .mw-rcfilters-ui-savedLinksListItemWidget { color: var(--wiki-content-text-color); padding: 8px 6px; -webkit-transition: color .3s, background-color .3s; transition: color .3s, background-color .3s; } .mw-rcfilters-ui-savedLinksListWidget-menu .mw-rcfilters-ui-savedLinksListItemWidget:hover { background-color: color-mix(in srgb, var(--wiki-accent-color) 15%, transparent); color: var(--wiki-accent-color); } .mw-rcfilters-ui-savedLinksListItemWidget-label { color: var(--wiki-accent-color); } .mw-rcfilters-ui-filterTagMultiselectWidget.oo-ui-tagMultiselectWidget.oo-ui-widget-enabled.oo-ui-tagMultiselectWidget-outlined { background-color: transparent; } .mw-rcfilters-ui-filterTagMultiselectWidget.oo-ui-widget-enabled .oo-ui-tagMultiselectWidget-handle { border-color: var(--wiki-content-border-color); } .mw-rcfilters-ui-filterTagMultiselectWidget.oo-ui-widget-enabled .oo-ui-tagMultiselectWidget-handle + .mw-rcfilters-ui-table, .mw-rcfilters-ui-filterTagMultiselectWidget.oo-ui-widget-enabled .oo-ui-tagMultiselectWidget-handle.mw-rcfilters-ui-filterTagMultiselectWidget-emphasize { background-color: var(--wiki-content-background-color--secondary); } .mw-rcfilters-ui-filterTagMultiselectWidget-views-select-widget.oo-ui-widget { border-color: var(--wiki-content-border-color); padding: 0; } .mw-rcfilters-ui-filterTagMultiselectWidget-wrapper-content-title { color: var(--wiki-content-text-color); } .mw-rcfilters-ui-filterTagMultiselectWidget-wrapper-content-savedQueryTitle { color: var(--wiki-content-text-color); } .mw-rcfilters-ui-filterTagMultiselectWidget-hideshowButton .oo-ui-buttonElement-button > .oo-ui-labelElement-label { color: var(--wiki-content-link-color); } .mw-rcfilters-ui-filterTagMultiselectWidget-hideshowButton .oo-ui-buttonElement-button > .oo-ui-labelElement-label:hover { color: var(--wiki-content-link-color--hover); } .mw-rcfilters-ui-filterTagMultiselectWidget-hideshowButton .oo-ui-buttonElement-button:before { content: "["; } .mw-rcfilters-ui-filterTagMultiselectWidget-hideshowButton .oo-ui-buttonElement-button:after { content: "]"; } .oo-ui-buttonElement-frameless.oo-ui-widget-enabled.oo-ui-flaggedElement-progressive > .oo-ui-buttonElement-button { color: var(--wiki-content-text-color); } .oo-ui-tagItemWidget.oo-ui-widget-enabled .oo-ui-buttonElement-button:hover { background-color: var(--wiki-content-dynamic-color--inverted); } .mw-rcfilters-ui-filterTagMultiselectWidget-emptyFilters { color: color-mix(in srgb, var(--wiki-content-text-color) 60%, transparent); } .mw-rcfilters-ui-filterMenuSectionOptionWidget { background-color: var(--wiki-content-background-color); } .oo-ui-menuSelectWidget { background-color: var(--wiki-content-background-color--secondary); border: 1px solid var(--wiki-content-text-mix-color); } .mw-rcfilters-ui-filterMenuSectionOptionWidget-header-title.oo-ui-labelElement-label { color: var(--wiki-content-text-color); } .mw-rcfilters-ui-filterMenuHeaderWidget-header { background-color: var(--wiki-content-background-color); border-bottom-color: var(--wiki-content-border-color); } .mw-rcfilters-ui-filterMenuHeaderWidget-title { color: var(--wiki-content-text-color); } .mw-rcfilters-ui-itemMenuOptionWidget:not(:last-child):not(.mw-rcfilters-ui-itemMenuOptionWidget-identifier-talk) { border-bottom-color: var(--wiki-content-text-mix-color); } .mw-rcfilters-ui-itemMenuOptionWidget-view-namespaces { border-top-color: var(--wiki-content-border-color); } .mw-rcfilters-ui-itemMenuOptionWidget.oo-ui-optionWidget-selected, .mw-rcfilters-ui-itemMenuOptionWidget.oo-ui-optionWidget-selected .mw-rcfilters-ui-itemMenuOptionWidget-label-title, .mw-rcfilters-ui-itemMenuOptionWidget:hover, .mw-rcfilters-ui-itemMenuOptionWidget:hover .mw-rcfilters-ui-itemMenuOptionWidget-label-title { color: var(--wiki-content-text-color); } .mw-rcfilters-ui-itemMenuOptionWidget.oo-ui-optionWidget-selected .oo-ui-checkboxInputWidget.oo-ui-widget-enabled [type=checkbox] + span, .mw-rcfilters-ui-itemMenuOptionWidget:hover .oo-ui-checkboxInputWidget.oo-ui-widget-enabled [type=checkbox] + span { border-color: var(--wiki-accent-color); } .mw-rcfilters-ui-itemMenuOptionWidget.oo-ui-optionWidget-selected, .mw-rcfilters-ui-itemMenuOptionWidget:hover { background-color: color-mix(in srgb, var(--wiki-accent-color) 15%, transparent) } .mw-rcfilters-ui-itemMenuOptionWidget-excludeLabel, .mw-rcfilters-ui-itemMenuOptionWidget-label-title { color: var(--wiki-content-text-color); } .mw-rcfilters-ui-itemMenuOptionWidget-label-desc { color: color-mix(in srgb, var(--wiki-content-text-color) 60%, transparent); } .mw-rcfilters-ui-itemMenuOptionWidget.oo-ui-flaggedElement-muted.oo-ui-optionWidget-selected:hover, .mw-rcfilters-ui-itemMenuOptionWidget.oo-ui-flaggedElement-muted:not(.oo-ui-optionWidget-selected):hover { background-color: color-mix(in srgb, var(--wiki-accent-color) 15%, transparent); } .mw-rcfilters-ui-itemMenuOptionWidget.oo-ui-flaggedElement-muted.oo-ui-optionWidget-selected .mw-rcfilters-ui-itemMenuOptionWidget-label-title, .mw-rcfilters-ui-itemMenuOptionWidget.oo-ui-flaggedElement-muted:not(.oo-ui-optionWidget-selected) .mw-rcfilters-ui-itemMenuOptionWidget-label-title { color: var(--wiki-content-text-color); } .mw-rcfilters-ui-itemMenuOptionWidget.oo-ui-flaggedElement-muted.oo-ui-optionWidget-selected .mw-rcfilters-ui-itemMenuOptionWidget-label-desc { color: color-mix(in srgb, var(--wiki-content-text-color) 60%, transparent); } .mw-rcfilters-ui-itemMenuOptionWidget.oo-ui-optionWidget-selected .mw-rcfilters-ui-itemMenuOptionWidget-label-desc, .mw-rcfilters-ui-itemMenuOptionWidget:hover .mw-rcfilters-ui-itemMenuOptionWidget-label-desc, .mw-rcfilters-ui-itemMenuOptionWidget.oo-ui-flaggedElement-muted:not(.oo-ui-optionWidget-selected) .mw-rcfilters-ui-itemMenuOptionWidget-label-desc { color: color-mix(in srgb, var(--wiki-content-text-color) 80%, transparent); } .mw-rcfilters-ui-itemMenuOptionWidget.oo-ui-flaggedElement-muted.oo-ui-optionWidget-selected .oo-ui-checkboxInputWidget.oo-ui-widget-enabled [type=checkbox] + span, .mw-rcfilters-ui-itemMenuOptionWidget.oo-ui-flaggedElement-muted:not(.oo-ui-optionWidget-selected) .oo-ui-checkboxInputWidget.oo-ui-widget-enabled [type=checkbox] + span { border-color: var(--wiki-content-text-color); } .mw-rcfilters-ui-viewSwitchWidget label.oo-ui-labelWidget { color: color-mix(in srgb, var(--wiki-content-text-color) 60%, transparent); } .oo-ui-tagItemWidget.oo-ui-widget-enabled, .oo-ui-tagMultiselectWidget.oo-ui-widget-enabled.oo-ui-tagMultiselectWidget-outlined .oo-ui-tagItemWidget.oo-ui-widget-enabled { background-color: transparent; color: var(--wiki-content-text-color); border-color: color-mix(in srgb, var(--wiki-accent-color) 50%, transparent); } .oo-ui-tagMultiselectWidget.oo-ui-widget-enabled.oo-ui-tagMultiselectWidget-outlined .oo-ui-tagItemWidget.oo-ui-widget-enabled.selected { background-color: color-mix(in srgb, var(--wiki-accent-color) 10%, transparent); border-color: var(--wiki-accent-color); } .mw-rcfilters-ui-datePopupWidget { border-color: var(--wiki-content-border-color); } .mw-rcfilters-ui-datePopupWidget .mw-rcfilters-ui-valuePickerWidget-title { color: color-mix(in srgb, var(--wiki-content-text-color) 80%, transparent); } .mw-changeslist-legend, .mw-rcfilters-ui-changesListWrapperWidget .mw-changeslist-legend { background-color: var(--wiki-content-background-color--secondary); border-color: var(--wiki-content-border-color); } @keyframes fadeBlue { 60% { border-top-color: var(--wiki-accent-color); } 100% { border-top-color: var(--wiki-content-border-color); } } .mw-rcfilters-ui-changesListWrapperWidget-previousChangesIndicator { border-top-color: var(--wiki-content-border-color); } .mw-rcfilters-ui-menuSelectWidget-footer { background-color: var(--wiki-content-text-mix-color-95); } .mw-rcfilters-ui-filterMenuOptionWidget.oo-ui-flaggedElement-muted:not(.oo-ui-optionWidget-selected) { background-color: color-mix(in srgb, var(--wiki-content-text-color) 10%, transparent); } .oo-ui-iconElement-icon.mw-rcfilters-ui-filterItemHighlightButton-circle { filter: unset; } .oo-ui-tagMultiselectWidget.oo-ui-widget-enabled.oo-ui-tagMultiselectWidget-outlined .mw-rcfilters-ui-tagItemWidget-selected.oo-ui-tagItemWidget.oo-ui-widget-enabled { background-color: color-mix(in srgb, var(--wiki-accent-color) 20%, transparent); border-color: var(--wiki-accent-color); } .mw-rcfilters-ui-tagItemWidget.oo-ui-flaggedElement-muted.oo-ui-tagItemWidget.oo-ui-widget-enabled .oo-ui-labelElement-label { color: color-mix(in srgb, var(--wiki-content-text-color) 76%, transparent); } .mw-rcfilters-ui-tagItemWidget-popup-content { color: color-mix(in srgb, var(--wiki-content-text-color) 75%, transparent); } /* fix for weird focus box on recentchanges arrows when clicking, but keep it for tab navigation */ .mw-enhancedchanges-checkbox:focus + * .mw-enhancedchanges-arrow { outline: none; } .mw-enhancedchanges-checkbox:focus-visible + * .mw-enhancedchanges-arrow { outline: 1px solid var(--wiki-accent-color); } /**/ .oo-ui-popupWidget-anchored-bottom .oo-ui-popupWidget-anchor:before { border-top-color: var(--wiki-content-border-color); } .oo-ui-popupWidget-anchored-bottom .oo-ui-popupWidget-anchor:after { border-top-color: var(--wiki-content-background-color--secondary); } .unpatrolled { color: var(--wiki-alert-color); } .autocomment, .autocomment a, .autocomment a:visited { color: var(--wiki-content-text-mix-color); } /* Recent changes filter highlighting */ .view-dark .mw-rcfilters-ui-changesListWrapperWidget li.mw-rcfilters-highlight-color-c1, .view-dark .mw-rcfilters-ui-changesListWrapperWidget .mw-rcfilters-highlight-color-c1 tr:first-child, .view-dark .mw-rcfilters-ui-changesListWrapperWidget tr.mw-rcfilters-highlight-color-c1.mw-rcfilters-ui-highlights-enhanced-toplevel:not(.mw-rcfilters-ui-changesListWrapperWidget-enhanced-grey) td:not(:nth-child(-n+2)), .view-dark .mw-rcfilters-ui-changesListWrapperWidget tr.mw-rcfilters-highlight-color-c1.mw-rcfilters-ui-highlights-enhanced-nested:not(.mw-rcfilters-ui-changesListWrapperWidget-enhanced-grey) td:not(:nth-child(-n+4)) { background-color: #1c283f; } .view-dark .mw-rcfilters-ui-changesListWrapperWidget li.mw-rcfilters-highlight-color-c2, .view-dark .mw-rcfilters-ui-changesListWrapperWidget .mw-rcfilters-highlight-color-c2 tr:first-child, .view-dark .mw-rcfilters-ui-changesListWrapperWidget tr.mw-rcfilters-highlight-color-c2.mw-rcfilters-ui-highlights-enhanced-toplevel:not(.mw-rcfilters-ui-changesListWrapperWidget-enhanced-grey) td:not(:nth-child(-n+2)), .view-dark .mw-rcfilters-ui-changesListWrapperWidget tr.mw-rcfilters-highlight-color-c2.mw-rcfilters-ui-highlights-enhanced-nested:not(.mw-rcfilters-ui-changesListWrapperWidget-enhanced-grey) td:not(:nth-child(-n+4)) { background-color: #0f3128; } .view-dark .mw-rcfilters-ui-changesListWrapperWidget li.mw-rcfilters-highlight-color-c3, .view-dark .mw-rcfilters-ui-changesListWrapperWidget .mw-rcfilters-highlight-color-c3 tr:first-child, .view-dark .mw-rcfilters-ui-changesListWrapperWidget tr.mw-rcfilters-highlight-color-c3.mw-rcfilters-ui-highlights-enhanced-toplevel:not(.mw-rcfilters-ui-changesListWrapperWidget-enhanced-grey) td:not(:nth-child(-n+2)), .view-dark .mw-rcfilters-ui-changesListWrapperWidget tr.mw-rcfilters-highlight-color-c3.mw-rcfilters-ui-highlights-enhanced-nested:not(.mw-rcfilters-ui-changesListWrapperWidget-enhanced-grey) td:not(:nth-child(-n+4)) { background-color: #352c10; } .view-dark .mw-rcfilters-ui-changesListWrapperWidget li.mw-rcfilters-highlight-color-c4, .view-dark .mw-rcfilters-ui-changesListWrapperWidget .mw-rcfilters-highlight-color-c4 tr:first-child, .view-dark .mw-rcfilters-ui-changesListWrapperWidget tr.mw-rcfilters-highlight-color-c4.mw-rcfilters-ui-highlights-enhanced-toplevel:not(.mw-rcfilters-ui-changesListWrapperWidget-enhanced-grey) td:not(:nth-child(-n+2)), .view-dark .mw-rcfilters-ui-changesListWrapperWidget tr.mw-rcfilters-highlight-color-c4.mw-rcfilters-ui-highlights-enhanced-nested:not(.mw-rcfilters-ui-changesListWrapperWidget-enhanced-grey) td:not(:nth-child(-n+4)) { background-color: #411d0c; } .view-dark .mw-rcfilters-ui-changesListWrapperWidget li.mw-rcfilters-highlight-color-c5, .view-dark .mw-rcfilters-ui-changesListWrapperWidget .mw-rcfilters-highlight-color-c5 tr:first-child, .view-dark .mw-rcfilters-ui-changesListWrapperWidget tr.mw-rcfilters-highlight-color-c5.mw-rcfilters-ui-highlights-enhanced-toplevel:not(.mw-rcfilters-ui-changesListWrapperWidget-enhanced-grey) td:not(:nth-child(-n+2)), .view-dark .mw-rcfilters-ui-changesListWrapperWidget tr.mw-rcfilters-highlight-color-c5.mw-rcfilters-ui-highlights-enhanced-nested:not(.mw-rcfilters-ui-changesListWrapperWidget-enhanced-grey) td:not(:nth-child(-n+4)) { background-color: #3f0f0f; } .oo-ui-tagMultiselectWidget.oo-ui-widget-enabled, .oo-ui-tagMultiselectWidget.oo-ui-widget-enabled.oo-ui-tagMultiselectWidget-outlined { background-color: transparent; } .oo-ui-tagMultiselectWidget.oo-ui-widget-enabled .oo-ui-tagMultiselectWidget-handle { background-color: var(--wiki-content-background-color--secondary); border-color: var(--wiki-content-border-color); color: var(--wiki-content-text-color); -webkit-transition: border-color 300ms, box-shadow 300ms; transition: border-color 300ms, box-shadow 300ms; } .oo-ui-tagMultiselectWidget.oo-ui-widget-enabled.oo-ui-tagMultiselectWidget-inlined.oo-ui-tagMultiselectWidget-focus .oo-ui-tagMultiselectWidget-handle { box-shadow: inset 0 0 0 1px var(--wiki-accent-color); border-color: var(--wiki-accent-color); outline: 0 } .oo-ui-tagMultiselectWidget.oo-ui-widget-enabled.oo-ui-tagMultiselectWidget-inlined:hover .oo-ui-tagMultiselectWidget-handle { border-color: var(--wiki-accent-color) } .oo-ui-tagMultiselectWidget.oo-ui-widget-enabled.oo-ui-tagMultiselectWidget-inlined.oo-ui-flaggedElement-invalid .oo-ui-tagMultiselectWidget-handle, .oo-ui-tagMultiselectWidget.oo-ui-widget-enabled.oo-ui-tagMultiselectWidget-inlined.oo-ui-flaggedElement-invalid:hover .oo-ui-tagMultiselectWidget-handle { border-color: var(--wiki-alert-color) } .oo-ui-tagMultiselectWidget.oo-ui-widget-enabled.oo-ui-tagMultiselectWidget-outlined .oo-ui-tagMultiselectWidget-handle { background-color: var(--wiki-content-background-color--secondary); border-bottom-width: 0; border-bottom-left-radius: 0; border-bottom-right-radius: 0 } .oo-ui-tagMultiselectWidget.oo-ui-widget-enabled.oo-ui-tagMultiselectWidget-outlined .oo-ui-inputWidget-input { border-radius: 0; } .oo-ui-tagMultiselectWidget.oo-ui-widget-enabled.oo-ui-tagMultiselectWidget-outlined.oo-ui-flaggedElement-invalid .oo-ui-inputWidget-input { border-color: var(--wiki-alert-color); } .oo-ui-tagMultiselectWidget.oo-ui-widget-enabled.oo-ui-flaggedElement-invalid .oo-ui-inputWidget-input { color: var(--wiki-alert-color); } .oo-ui-tagMultiselectWidget.oo-ui-widget-disabled .oo-ui-tagMultiselectWidget-handle { opacity: 0.5; } .oo-ui-tagMultiselectWidget-handle .oo-ui-tagMultiselectWidget-group > input { color: var(--wiki-content-text-color); } .oo-ui-tagMultiselectWidget .oo-ui-inputWidget-input { color: inherit; background: transparent; font-family: inherit; } .oo-ui-dropdownWidget.oo-ui-widget-disabled .oo-ui-dropdownWidget-handle, .oo-ui-textInputWidget.oo-ui-widget-disabled .oo-ui-inputWidget-input, .oo-ui-dropdownWidget.oo-ui-widget-disabled .oo-ui-dropdownWidget-handle { background: var(--wiki-content-text-mix-color-95); color: color-mix(in srgb, var(--wiki-content-text-color) 25%, transparent); text-shadow: none; border-color: var(--wiki-content-text-mix-color); } .oo-ui-dropdownInputWidget select { border-color: var(--wiki-content-border-color); } .oo-ui-dropdownInputWidget.oo-ui-widget-enabled select:focus { border-color: var(--wiki-accent-color); box-shadow: inset 0 0 0 1px var(--wiki-accent-color); } .oo-ui-toggleSwitchWidget { background-color: var(--wiki-content-background-color--secondary); border-color: var(--wiki-content-border-color); } .oo-ui-toggleSwitchWidget.oo-ui-widget-enabled:hover { background-color: color-mix(in srgb, var(--wiki-content-background-color--secondary) 95%, var(--wiki-content-dynamic-color)); border-color: color-mix(in srgb, var(--wiki-content-border-color) 95%, var(--wiki-content-dynamic-color)); } .oo-ui-toggleSwitchWidget.oo-ui-widget-enabled .oo-ui-toggleSwitchWidget-grip { background-color: color-mix(in srgb, var(--wiki-accent-color) 50%, transparent); border-color: #0006; } .oo-ui-toggleSwitchWidget.oo-ui-widget-enabled:hover .oo-ui-toggleSwitchWidget-grip { background-color: color-mix(in srgb, var(--wiki-accent-color) 90%, var(--wiki-content-dynamic-color)); border-color: #0006; } .oo-ui-toggleSwitchWidget.oo-ui-widget-enabled.oo-ui-toggleWidget-on .oo-ui-toggleSwitchWidget-grip { background-color: var(--wiki-accent-label-color); border-color: #0006; } .oo-ui-toggleSwitchWidget.oo-ui-widget-enabled:focus .oo-ui-toggleSwitchWidget-grip { border-color: var(--wiki-accent-color); } .oo-ui-toggleSwitchWidget.oo-ui-widget-enabled.oo-ui-toggleWidget-on { background-color: var(--wiki-accent-color); border-color: var(--wiki-accent-color); } .oo-ui-toggleSwitchWidget.oo-ui-widget-enabled.oo-ui-toggleWidget-on:hover { background-color: var(--wiki-accent-color--hover); border-color: var(--wiki-accent-color--hover); } .oo-ui-toggleSwitchWidget.oo-ui-widget-enabled:active, .oo-ui-toggleSwitchWidget.oo-ui-widget-enabled:active:hover, .oo-ui-toggleSwitchWidget.oo-ui-widget-enabled:active:focus { background-color: var(--wiki-accent-color--hover); border-color: var(--wiki-accent-color--hover); box-shadow: inset 0 0 0 1px var(--wiki-accent-color--hover); } .oo-ui-toggleSwitchWidget.oo-ui-widget-enabled:active .oo-ui-toggleSwitchWidget-grip, .oo-ui-toggleSwitchWidget.oo-ui-widget-enabled:active:hover .oo-ui-toggleSwitchWidget-grip, .oo-ui-toggleSwitchWidget.oo-ui-widget-enabled:active:focus .oo-ui-toggleSwitchWidget-grip { background-color: var(--wiki-accent-label-color); border-color: var(--wiki-accent-label-color); } .oo-ui-toggleSwitchWidget.oo-ui-widget-enabled:focus { border-color: var(--wiki-accent-color); box-shadow: inset 0 0 0 1px var(--wiki-accent-color); } .oo-ui-toggleSwitchWidget.oo-ui-widget-enabled.oo-ui-toggleWidget-on:active, .oo-ui-toggleSwitchWidget.oo-ui-widget-enabled.oo-ui-toggleWidget-on:active:hover { background-color: var(--wiki-accent-color--hover); border-color: var(--wiki-accent-color--hover); } .oo-ui-toggleSwitchWidget.oo-ui-widget-enabled.oo-ui-toggleWidget-on:focus { border-color: var(--wiki-accent-color); } .oo-ui-toggleSwitchWidget.oo-ui-widget-enabled.oo-ui-toggleWidget-on:focus::before { border-color: var(--wiki-accent-label-color); } .oo-ui-toggleSwitchWidget.oo-ui-widget-disabled { background-color: var(--wiki-content-text-mix-color-95); border-color: var(--wiki-content-text-mix-color-95); } .oo-ui-toggleSwitchWidget.oo-ui-widget-disabled.oo-ui-toggleWidget-off .oo-ui-toggleSwitchWidget-grip { border-color: var(--wiki-content-dynamic-color--inverted); box-shadow: inset 0 0 0 1px var(--wiki-content-dynamic-color--inverted); } .oo-ui-outlineOptionWidget.oo-ui-optionWidget-selected, .oo-ui-outlineOptionWidget.oo-ui-optionWidget-highlighted { background-color: var(--wiki-content-background-color--secondary); color: var(--wiki-content-link-color); } .oo-ui-labelWidget.oo-ui-inline-help { color: color-mix(in srgb, var(--wiki-content-text-color) 80%, transparent); } .oo-ui-progressBarWidget:not(.oo-ui-pendingElement-pending) { background-color: var(--wiki-content-background-color); border-color: var(--wiki-accent-color); box-shadow: 0 1px 1px color-mix(in srgb, var(--wiki-content-dynamic-color) 15%, transparent); } .oo-ui-progressBarWidget.oo-ui-widget-enabled .oo-ui-progressBarWidget-bar { background-color: var(--wiki-accent-color); } .oo-ui-bookletLayout-outlinePanel { padding: 7px 0; } .oo-ui-processDialog-content .oo-ui-window-head, .oo-ui-processDialog-content .oo-ui-window-foot, .oo-ui-messageDialog-content > .oo-ui-window-head, .oo-ui-messageDialog-content > .oo-ui-window-foot { outline-color: var(--wiki-content-border-color); } .oo-ui-messageDialog-actions-horizontal .oo-ui-actionWidget { border-right-color: var(--wiki-content-border-color); } .oo-ui-messageDialog-title { color: var(--wiki-content-heading-color); } .oo-ui-processDialog-actions-safe .oo-ui-widget-enabled.oo-ui-iconElement:not(.oo-ui-labelElement) > .oo-ui-buttonElement-button:hover { background-color: var(--wiki-content-background-color); border-right-color: var(--wiki-content-border-color); } .oo-ui-processDialog-errors { background-color: color-mix(in srgb, var(--wiki-content-dynamic-color--inverted) 90%, transparent); } /* OAuth authorisation dialog */ #mw-mwoauth-authorize-form { color: inherit; } .oo-ui-toolbar-bar, .oo-ui-popupToolGroup-tools, .oo-ui-listToolGroup-tools .oo-ui-tool.oo-ui-widget-enabled:hover { background-color: var(--wiki-content-background-color--secondary); color: var(--wiki-content-text-color); } .oo-ui-popupToolGroup-tools { max-width: 100%; } .oo-ui-toolbar-actions .oo-ui-popupToolGroup.oo-ui-widget-enabled > .oo-ui-popupToolGroup-handle:hover { border-right-color: var(--wiki-content-border-color); } .oo-ui-menuToolGroup-tools .oo-ui-tool.oo-ui-tool-active, .oo-ui-tool.oo-ui-widget-enabled > .oo-ui-tool-link:active, .oo-ui-tool.oo-ui-widget-enabled.oo-ui-tool-active > .oo-ui-tool-link, .oo-ui-tool.oo-ui-widget-enabled.oo-ui-popupToolGroup-active > .oo-ui-tool-link, .oo-ui-popupToolGroup.oo-ui-popupToolGroup-active > .oo-ui-popupToolGroup-handle { background-color: var(--wiki-content-background-color); color: var(--wiki-content-link-color); } .oo-ui-tool.oo-ui-widget-enabled .oo-ui-tool-link { /* we remove the transition here because it causes the hard-coded color to flash briefly */ transition: none; } .oo-ui-popupToolGroup.oo-ui-popupToolGroup-active > .oo-ui-popupToolGroup-handle:hover { color: var(--wiki-accent-color); } .oo-ui-popupToolGroup-tools .oo-ui-tool-active.oo-ui-widget-enabled .oo-ui-tool-link .oo-ui-tool-title { color: var(--wiki-accent-color); } .oo-ui-popupToolGroup.oo-ui-widget-enabled > .oo-ui-popupToolGroup-handle:hover, .oo-ui-tool.oo-ui-widget-enabled > .oo-ui-tool-link:hover { background-color: color-mix(in srgb, var(--wiki-accent-color) 10%, transparent); } .oo-ui-popupToolGroup.oo-ui-widget-enabled > .oo-ui-popupToolGroup-handle:active { background-color: color-mix(in srgb, var(--wiki-accent-color) 15%, transparent); } .oo-ui-popupToolGroup-tools .oo-ui-tool.oo-ui-widget-enabled .oo-ui-tool-link:focus { box-shadow: inset 0 0 0 2px var(--wiki-accent-color); } .oo-ui-popupToolGroup.oo-ui-widget-enabled > .oo-ui-popupToolGroup-handle:focus, .oo-ui-tool.oo-ui-widget-enabled .oo-ui-tool-link:focus, .oo-ui-tool.oo-ui-widget-enabled > .oo-ui-tool-link:focus { outline: 1px solid var(--wiki-accent-color); box-shadow: inset 0 0 0 1px var(--wiki-accent-color); } .oo-ui-menuToolGroup, .oo-ui-popupToolGroup-tools { border-color: var(--wiki-content-border-color); } .oo-ui-toolbar-position-top > .oo-ui-toolbar-bar { border-color: var(--wiki-content-border-color); box-shadow: 0 1px 1px 0 color-mix(in srgb, var(--wiki-content-dynamic-color) 10%, transparent); } .oo-ui-barToolGroup-tools.oo-ui-toolGroup-enabled-tools .oo-ui-tool.oo-ui-widget-disabled.oo-ui-flaggedElement-primary > .oo-ui-tool-link, .oo-ui-barToolGroup-tools.oo-ui-toolGroup-disabled-tools .oo-ui-tool.oo-ui-flaggedElement-primary > .oo-ui-tool-link { background-color: var(--wiki-content-text-mix-color); border-color: var(--wiki-content-text-mix-color); } .oo-ui-tool.oo-ui-widget-enabled.oo-ui-flaggedElement-primary.oo-ui-flaggedElement-progressive > .oo-ui-tool-link { background-color: var(--wiki-accent-color); color: var(--wiki-accent-label-color); } .oo-ui-tool.oo-ui-widget-enabled.oo-ui-flaggedElement-primary.oo-ui-flaggedElement-progressive > .oo-ui-tool-link:hover { background-color: var(--wiki-accent-color--hover); color: var(--wiki-accent-label-color); } .oo-ui-buttonElement-frameless > .oo-ui-buttonElement-button, .oo-ui-buttonElement-frameless.oo-ui-widget-enabled > .oo-ui-buttonElement-button { color: var(--wiki-content-text-color); } .oo-ui-buttonElement-frameless.oo-ui-widget-enabled > .oo-ui-buttonElement-button:hover, .oo-ui-buttonElement-frameless.oo-ui-widget-enabled > .oo-ui-buttonElement-button:active, .oo-ui-buttonElement-frameless.oo-ui-widget-enabled > .oo-ui-buttonElement-button:focus { color: var(--wiki-content-text-color--hover); } .oo-ui-buttonElement-frameless.oo-ui-widget-enabled > .oo-ui-buttonElement-button:focus { border-color: var(--wiki-accent-color); box-shadow: inset 0 0 0 1px var(--wiki-accent-color); } .oo-ui-buttonElement-frameless.oo-ui-flaggedElement-progressive > .oo-ui-buttonElement-button { color: var(--wiki-content-text-color); } .oo-ui-buttonElement-frameless.oo-ui-flaggedElement-progressive.oo-ui-widget-enabled > .oo-ui-buttonElement-button:hover, .oo-ui-buttonElement-frameless.oo-ui-flaggedElement-progressive.oo-ui-widget-enabled > .oo-ui-buttonElement-button:active, .oo-ui-buttonElement-frameless.oo-ui-flaggedElement-progressive.oo-ui-widget-enabled > .oo-ui-buttonElement-button:focus { color: var(--wiki-content-text-color--hover); } .oo-ui-buttonElement-frameless.oo-ui-flaggedElement-destructive > .oo-ui-buttonElement-button { color: var(--wiki-alert-color); } .oo-ui-buttonElement-frameless > .oo-ui-buttonElement-button { border: 1px solid transparent; } .oo-ui-buttonElement-frameless > button.oo-ui-buttonElement-button { color: inherit; } .oo-ui-buttonElement-framed.oo-ui-flaggedElement-primary.oo-ui-flaggedElement-progressive > .oo-ui-buttonElement-button, .oo-ui-buttonElement-framed.oo-ui-widget-enabled.oo-ui-flaggedElement-primary.oo-ui-flaggedElement-progressive > .oo-ui-buttonElement-button { background-color: var(--wiki-accent-color); border-color: var(--wiki-accent-color); color: var(--wiki-accent-label-color); } .oo-ui-buttonElement-framed.oo-ui-widget-enabled.oo-ui-flaggedElement-primary.oo-ui-flaggedElement-progressive > .oo-ui-buttonElement-button:focus { border-color: var(--wiki-accent-color); box-shadow: inset 0 0 0 1px var(--wiki-accent-color), inset 0 0 0 2px var(--wiki-accent-label-color); } .oo-ui-buttonElement-framed.oo-ui-flaggedElement-primary.oo-ui-flaggedElement-progressive.oo-ui-widget-enabled > .oo-ui-buttonElement-button:focus, .oo-ui-buttonElement-framed.oo-ui-widget-enabled.oo-ui-flaggedElement-primary.oo-ui-flaggedElement-progressive.oo-ui-widget-enabled > .oo-ui-buttonElement-button:focus, .oo-ui-buttonElement-framed.oo-ui-flaggedElement-primary.oo-ui-flaggedElement-progressive.oo-ui-widget-enabled > .oo-ui-buttonElement-button:hover, .oo-ui-buttonElement-framed.oo-ui-widget-enabled.oo-ui-flaggedElement-primary.oo-ui-flaggedElement-progressive.oo-ui-widget-enabled > .oo-ui-buttonElement-button:hover, .oo-ui-buttonElement-framed.oo-ui-flaggedElement-primary.oo-ui-flaggedElement-progressive.oo-ui-widget-enabled > .oo-ui-buttonElement-button:active, .oo-ui-buttonElement-framed.oo-ui-widget-enabled.oo-ui-flaggedElement-primary.oo-ui-flaggedElement-progressive.oo-ui-widget-enabled > .oo-ui-buttonElement-button:active { background-color: var(--wiki-accent-color--hover); border-color: var(--wiki-accent-color--hover); color: var(--wiki-accent-label-color); } .oo-ui-buttonElement-framed.oo-ui-flaggedElement-primary.oo-ui-flaggedElement-destructive > .oo-ui-buttonElement-button, .oo-ui-buttonElement-framed.oo-ui-widget-enabled.oo-ui-flaggedElement-primary.oo-ui-flaggedElement-destructive > .oo-ui-buttonElement-button { background-color: #bf0017; border-color: #bf0017; color: #fff; } .oo-ui-buttonElement-framed.oo-ui-flaggedElement-primary.oo-ui-flaggedElement-destructive.oo-ui-widget-enabled > .oo-ui-buttonElement-button:focus, .oo-ui-buttonElement-framed.oo-ui-widget-enabled.oo-ui-flaggedElement-primary.oo-ui-flaggedElement-destructive.oo-ui-widget-enabled > .oo-ui-buttonElement-button:focus, .oo-ui-buttonElement-framed.oo-ui-flaggedElement-primary.oo-ui-flaggedElement-destructive.oo-ui-widget-enabled > .oo-ui-buttonElement-button:hover, .oo-ui-buttonElement-framed.oo-ui-widget-enabled.oo-ui-flaggedElement-primary.oo-ui-flaggedElement-destructive.oo-ui-widget-enabled > .oo-ui-buttonElement-button:hover, .oo-ui-buttonElement-framed.oo-ui-flaggedElement-primary.oo-ui-flaggedElement-destructive.oo-ui-widget-enabled > .oo-ui-buttonElement-button:active, .oo-ui-buttonElement-framed.oo-ui-widget-enabled.oo-ui-flaggedElement-primary.oo-ui-flaggedElement-destructive.oo-ui-widget-enabled > .oo-ui-buttonElement-button:active { background-color: #59000b; border-color: #59000b; } .oo-ui-buttonElement-framed.oo-ui-widget-enabled.oo-ui-buttonElement-active > .oo-ui-buttonElement-button { background-color: var(--wiki-accent-color); border-color: var(--wiki-accent-color); color: var(--wiki-accent-label-color); } .oo-ui-buttonElement-framed.oo-ui-widget-enabled.oo-ui-buttonElement-active > .oo-ui-buttonElement-button:focus { box-shadow: inset 0 0 0 1px var(--wiki-accent-color--hover), inset 0 0 0 2px var(--wiki-accent-label-color); } .oo-ui-buttonElement-framed.oo-ui-widget-enabled.oo-ui-buttonElement-active.oo-ui-widget-enabled > .oo-ui-buttonElement-button:focus, .oo-ui-buttonElement-framed.oo-ui-widget-enabled.oo-ui-buttonElement-active.oo-ui-widget-enabled > .oo-ui-buttonElement-button:hover, .oo-ui-buttonElement-framed.oo-ui-widget-enabled.oo-ui-buttonElement-active.oo-ui-widget-enabled > .oo-ui-buttonElement-button:active { background-color: var(--wiki-accent-color); border-color: var(--wiki-accent-color--hover); color: var(--wiki-accent-label-color); } .oo-ui-buttonElement-framed.oo-ui-widget-enabled.oo-ui-buttonElement-active.oo-ui-flaggedElement-progressive > .oo-ui-buttonElement-button { background-color: var(--wiki-accent-color); border-color: var(--wiki-accent-color); color: var(--wiki-accent-label-color); } .oo-ui-buttonElement-framed.oo-ui-widget-enabled.oo-ui-buttonElement-active.oo-ui-flaggedElement-progressive.oo-ui-widget-enabled > .oo-ui-buttonElement-button:focus, .oo-ui-buttonElement-framed.oo-ui-widget-enabled.oo-ui-buttonElement-active.oo-ui-flaggedElement-progressive.oo-ui-widget-enabled > .oo-ui-buttonElement-button:hover, .oo-ui-buttonElement-framed.oo-ui-widget-enabled.oo-ui-buttonElement-active.oo-ui-flaggedElement-progressive.oo-ui-widget-enabled > .oo-ui-buttonElement-button:active { background-color: var(--wiki-accent-color); border-color: var(--wiki-accent-color); } .oo-ui-buttonElement-framed.oo-ui-widget-enabled.oo-ui-flaggedElement-progressive > .oo-ui-buttonElement-button:hover, .oo-ui-buttonElement-framed.oo-ui-widget-enabled.oo-ui-flaggedElement-progressive > .oo-ui-buttonElement-button:active, .oo-ui-buttonElement-framed.oo-ui-widget-enabled.oo-ui-flaggedElement-progressive.oo-ui-buttonElement-pressed > .oo-ui-buttonElement-button, .oo-ui-buttonElement-framed.oo-ui-widget-enabled.oo-ui-flaggedElement-progressive.oo-ui-buttonElement-active > .oo-ui-buttonElement-button, .oo-ui-buttonElement-framed.oo-ui-widget-enabled.oo-ui-flaggedElement-progressive.oo-ui-popupToolGroup-active > .oo-ui-buttonElement-button { background-color: var(--wiki-content-background-color--secondary); border-color: var(--wiki-content-link-color); } .oo-ui-buttonElement-framed.oo-ui-widget-enabled.oo-ui-flaggedElement-progressive > .oo-ui-buttonElement-button:active, .oo-ui-buttonElement-framed.oo-ui-widget-enabled.oo-ui-flaggedElement-progressive.oo-ui-buttonElement-pressed > .oo-ui-buttonElement-button, .oo-ui-buttonElement-framed.oo-ui-widget-enabled.oo-ui-flaggedElement-progressive.oo-ui-buttonElement-active > .oo-ui-buttonElement-button, .oo-ui-buttonElement-framed.oo-ui-widget-enabled.oo-ui-flaggedElement-progressive.oo-ui-popupToolGroup-active > .oo-ui-buttonElement-button { color: var(--wiki-accent-color); } .oo-ui-buttonElement-frameless.oo-ui-widget-enabled.oo-ui-buttonElement-pressed > input.oo-ui-buttonElement-button, .oo-ui-buttonElement-frameless.oo-ui-widget-enabled > .oo-ui-buttonElement-button:active { background-color: color-mix(in srgb, var(--wiki-content-link-color) 8%, transparent); color: var(--wiki-content-text-color); border-color: var(--wiki-content-text-mix-color); } .oo-ui-buttonElement-frameless.oo-ui-widget-enabled.oo-ui-flaggedElement-progressive > .oo-ui-buttonElement-button:active, .oo-ui-buttonElement-frameless.oo-ui-widget-enabled.oo-ui-flaggedElement-progressive.oo-ui-buttonElement-pressed > .oo-ui-buttonElement-button { color: color-mix(in srgb, var(--wiki-content-link-color) 90%, transparent); border-color: color-mix(in srgb, var(--wiki-content-link-color) 90%, transparent); } .oo-ui-buttonElement-framed.oo-ui-widget-enabled > .oo-ui-buttonElement-button:hover { background-color: transparent; } .oo-ui-buttonElement-framed.oo-ui-widget-enabled.oo-ui-flaggedElement-destructive > .oo-ui-buttonElement-button:hover { background-color: var(--wiki-content-dynamic-color--inverted); } .oo-ui-buttonSelectWidget.oo-ui-widget-enabled:focus .oo-ui-buttonOptionWidget.oo-ui-optionWidget-selected .oo-ui-buttonElement-button { border-color: var(--wiki-accent-color--hover); box-shadow: inset 0 0 0 1px var(--wiki-accent-color--hover), inset 0 0 0 2px var(--wiki-accent-label-color); } .mw-htmlform-ooui .mw-htmlform-matrix tbody tr:nth-child(2n) td, .mw-htmlform-ooui .mw-htmlform-matrix tbody tr:hover td { background-color: var(--wiki-content-background-color--secondary); } .oo-ui-popupWidget-popup { background-color: var(--wiki-content-background-color--secondary); border-color: var(--wiki-content-border-color); color: var(--wiki-content-text-color); } .mw-advancedSearch-namespace-selection { background: var(--wiki-content-background-color--secondary); border: 1px solid var(--wiki-content-border-color); } .oo-ui-popupWidget-popup .mw-advancedSearch-tooltip-head { color: var(--wiki-content-text-mix-color); } .oo-ui-menuSectionOptionWidget { color: var(--wiki-content-text-mix-color); } /* possibly deprecated */ .mw-ui-button:not(:disabled) { background-color: var(--wiki-content-background-color--secondary); border-color: var(--wiki-content-border-color); color: var(--wiki-accent-color); border-color: var(--wiki-content-border-color); } .mw-ui-button:not(:disabled):visited { color: var(--wiki-accent-color); } .mw-ui-button:not(:disabled):hover { background-color: var(--wiki-content-text-mix-color-95); border-color: var(--wiki-content-border-color); color: var(--wiki-accent-color--hover); } .mw-ui-button:not(:disabled):focus { border-color: var(--wiki-accent-color); color: var(--wiki-content-text-color); box-shadow: none; } .mw-ui-button:not(:disabled):active, .mw-ui-button:not(:disabled).is-on { background-color: var(--wiki-content-background-color); color: var(--wiki-content-dynamic-color); border-color: var(--wiki-content-link-color); } /* end possibly deprecated */ .mw-ui-icon-before::before { filter: var(--wiki-icon-to-link-filter); } .oo-ui-windowManager-modal > .oo-ui-dialog > .oo-ui-window-frame { background-color: var(--wiki-content-background-color); color: var(--wiki-content-text-color); border-color: var(--wiki-content-border-color); } .oo-ui-windowManager-modal > .oo-ui-dialog { background-color: color-mix(in srgb, var(--wiki-content-dynamic-color--inverted) 50%, transparent); } .oo-ui-windowManager-modal.oo-ui-windowManager-floating > .oo-ui-dialog > .oo-ui-window-frame { border-color: var(--wiki-content-border-color); } .oo-ui-messageDialog-message { color: var(--wiki-content-text-color); } .oo-ui-buttonElement-framed:not(.oo-ui-flaggedElement-primary):not(.oo-ui-buttonElement-active) > .oo-ui-buttonElement-button { color: var(--wiki-content-text-color); } .oo-ui-buttonElement-framed.oo-ui-widget-disabled:not(.oo-ui-flaggedElement-primary):not(.oo-ui-buttonElement-active) > .oo-ui-buttonElement-button { color: var(--wiki-content-text-mix-color-95); } .oo-ui-buttonElement-framed.oo-ui-widget-enabled > .oo-ui-buttonElement-button { color: var(--wiki-accent-color); border-color: color-mix(in srgb, var(--wiki-accent-color) 50%, transparent); } .oo-ui-buttonElement-framed.oo-ui-widget-enabled > .oo-ui-buttonElement-button:hover { color: var(--wiki-accent-color--hover); border-color: var(--wiki-accent-color); box-shadow: inset 0 0 3px var(--wiki-accent-color); } .oo-ui-buttonElement-framed.oo-ui-widget-enabled > .oo-ui-buttonElement-button:active, .oo-ui-buttonElement-framed.oo-ui-widget-enabled.oo-ui-buttonElement-pressed > .oo-ui-buttonElement-button { background-color: var(--wiki-content-background-color--secondary); color: var(--wiki-content-link-color--hover); border-color: var(--wiki-content-link-color); } .oo-ui-buttonElement-framed.oo-ui-widget-enabled > .oo-ui-buttonElement-button:focus { border-color: var(--wiki-accent-color); box-shadow: inset 0 0 0 1px var(--wiki-accent-color); } .oo-ui-buttonElement-framed.oo-ui-widget-disabled > .oo-ui-buttonElement-button, .oo-ui-buttonElement-framed.oo-ui-widget-disabled.oo-ui-flaggedElement-primary > .oo-ui-buttonElement-button { background-color: var(--wiki-content-text-mix-color); border-color: var(--wiki-content-text-mix-color); } .tdg-templateDataParamWidget-param-description { color: var(--wiki-content-text-mix-color); } .oo-ui-messageWidget.oo-ui-flaggedElement-error:not(.oo-ui-messageWidget-block), .mw-body-content .error { color: var(--wiki-alert-color); } .oo-ui-messageWidget.oo-ui-messageWidget-block.oo-ui-flaggedElement-error { background-color: var(--wiki-content-background-color--secondary); border-color: var(--wiki-alert-color); border-left-width: 10px; } .oo-ui-messageWidget.oo-ui-messageWidget-block.oo-ui-flaggedElement-warning { background-color: var(--wiki-content-background-color--secondary); } .oo-ui-messageWidget.oo-ui-messageWidget-block.oo-ui-flaggedElement-success { background-color: var(--wiki-content-background-color--secondary); border-color: var(--wiki-success-color); border-left-width: 10px; } .oo-ui-messageWidget.oo-ui-messageWidget-block.oo-ui-flaggedElement-notice { background-color: var(--wiki-content-background-color--secondary); border-color: var(--wiki-content-text-mix-color); } .tdg-templateDataParamWidget-param-alias { color: var(--wiki-content-text-mix-color); background-color: var(--wiki-content-background-color); border-color: var(--wiki-content-border-color); } .tdg-templateDataParamWidget-param-alias:first-child { background-color: var(--wiki-content-background-color--secondary); } .mw-templatedata-doc-muted { color: var(--wiki-content-text-mix-color); } .oo-ui-processDialog-actions-safe .oo-ui-widget-enabled.oo-ui-iconElement:not(.oo-ui-labelElement) > .oo-ui-buttonElement-button:active { background-color: var(--wiki-content-background-color--secondary); border-right-color: var(--wiki-accent-color); } /* Date picker */ .mw-widget-dateInputWidget-handle { background-color: var(--wiki-content-background-color--secondary); border-color: var(--wiki-content-border-color); } .mw-widget-dateInputWidget.oo-ui-widget-enabled .mw-widget-dateInputWidget-handle:hover { border-color: var(--wiki-accent-color); box-shadow: none; } .mw-widget-dateInputWidget.oo-ui-widget-enabled .mw-widget-dateInputWidget-handle:focus { border-color: var(--wiki-accent-color); box-shadow: inset 0 0 0 1px var(--wiki-accent-color); } .mw-widget-dateInputWidget.oo-ui-widget-enabled .mw-widget-dateInputWidget-handle > .oo-ui-labelElement-label { color: var(--wiki-content-text-color); } .mw-widget-calendarWidget { border-color: var(--wiki-content-border-color); } .mw-widget-calendarWidget:focus { border-color: var(--wiki-accent-color); box-shadow: inset 0 0 0 1px var(--wiki-accent-color); } .mw-widget-dateInputWidget-calendar { background-color: var(--wiki-content-background-color); } .mw-widget-dateInputWidget-calendar:focus { box-shadow: inset 0 0 0 1px var(--wiki-accent-color), 0 2px 2px 0 rgba(0, 0, 0, 0.2); } .mw-widget-calendarWidget-header .oo-ui-labelElement-label, .mw-widget-calendarWidget-day, .mw-widget-calendarWidget-month, .mw-widget-calendarWidget-year { color: var(--wiki-content-text-color); } .mw-widget-calendarWidget-day-heading, .mw-widget-calendarWidget-day-additional { color: color-mix(in srgb, var(--wiki-content-text-color) 55%, transparent); } .mw-widget-calendarWidget-day-today { box-shadow: inset 0 0 0 1px var(--wiki-accent-color); } .mw-widget-calendarWidget-item-selected { background-color: color-mix(in srgb, var(--wiki-accent-color) 90%, transparent); color: var(--wiki-accent-label-color); } .mw-widget-calendarWidget-item:hover { background-color: var(--wiki-accent-color); color: var(--wiki-accent-label-color); } .mw-widgets-datetime-calendarWidget:focus { border-color: var(--wiki-content-border-color); box-shadow: none; } .mw-widgets-datetime-calendarWidget-grid { overflow-x: initial; } .mw-widgets-datetime-dateTimeInputWidget-handle { background-color: var(--wiki-content-background-color); border-color: var(--wiki-content-border-color); color: var(--wiki-content-text-color); } .mw-widgets-datetime-dateTimeInputWidget.oo-ui-widget-enabled .mw-widgets-datetime-dateTimeInputWidget-handle:hover { border-color: var(--wiki-content-border-color); } .mw-widgets-datetime-dateTimeInputWidget.oo-ui-widget-enabled .mw-widgets-datetime-dateTimeInputWidget-editField:hover { background-color: var(--wiki-content-background-color); } .mw-widgets-datetime-calendarWidget { background-color: var(--wiki-content-background-color); border-color: var(--wiki-content-border-color); } .mw-widgets-datetime-calendarWidget-grid .mw-widgets-datetime-calendarWidget-cell.mw-widgets-datetime-calendarWidget-extra .oo-ui-buttonElement-button .oo-ui-labelElement-label { color: color-mix(in srgb, var(--wiki-content-text-color) 55%, transparent); } /* Unpatrolled page creations on Special:NewPages */ .not-patrolled { background-color: color-mix(in srgb, var(--wiki-warning-color) 16%, transparent); } .mw-spinner-container > div::after { background-color: var(--wiki-content-text-color); } code { /* prevents long code blocks from overflowing on mobile */ white-space: pre-wrap; word-break: break-word; /* fallback for older browsers */ overflow-wrap: anywhere; } pre, code, .mw-code { background-color: var(--wiki-content-background-color--secondary); border: 1px solid var(--wiki-content-border-color); color: var(--wiki-content-text-color); } .mw-templatedata-doc-param-alias { color: var(--wiki-content-text-mix-color); } .mw-highlight{ overflow: unset !important; } .mw-highlight pre{ overflow: auto; } div.mw-highlight, .skin-theme-clientpref-night div.mw-highlight { background-color: var(--wiki-content-dynamic-color--inverted); margin: 0.5em 0; } .mw-highlight pre { background: color-mix(in srgb, var(--wiki-content-background-color--secondary) 50%, transparent); margin: 0; } .mw-content-ltr.mw-highlight-lines pre, .mw-content-ltr.content .mw-highlight-lines pre { padding-left: 3.5em; box-shadow: inset 2.75em 0 0 var(--wiki-content-dynamic-color--inverted); } .mw-highlight .hll { background-color: color-mix(in srgb, var(--wiki-accent-color) 20%, transparent) } .mw-apisandbox-toolbar { background: var(--wiki-content-background-color--secondary); top: var(--wikigg-header-scroll-height); } /* special:replacetext */ .ext-replacetext-searchoptions { background-color: transparent; border: 1px solid var(--wiki-content-border-color); } .ext-replacetext-searchoptions .ext-replacetext-divider { border-bottom: 1px solid var(--wiki-content-border-color); } /**/ .view-dark textarea { background-color: var(--wiki-content-background-color--secondary); border: 1px solid var(--wiki-content-border-color); color: var(--wiki-content-text-color); } .view-dark textarea:focus-visible { outline-color: var(--wiki-accent-color); outline-style: solid; } .oo-ui-textInputWidget.oo-ui-widget-enabled textarea.oo-ui-inputWidget-input:focus { outline: 1px solid var(--wiki-accent-color); } /* make math formulas legible on dark theme */ .mwe-math-fallback-image-inline, .mwe-math-fallback-image-display, .ve-ui-mwLatexPage-symbol { filter: var(--wiki-icon-general-filter); } /* search bar */ #searchInput { font-size: inherit; /* override UA style */ background-color: var(--wiki-navigation-search-background-color, var(--wiki-content-background-color--secondary)); background-image: var(--wiki-navigation-search-background-image, none); background-position: var(--wiki-navigation-search-background-position, 0); background-size: var(--wiki-navigation-search-background-size, auto); background-repeat: var(--wiki-navigation-search-background-repeat, repeat); border: var(--wiki-navigation-search-border-width, 1px) var(--wiki-navigation-search-border-style, solid) var(--wiki-navigation-search-border-color, var(--wiki-content-border-color)); border-radius: var(--wiki-navigation-search-border-radius, 2px); color: var(--wiki-navigation-search-text-color, var(--wiki-content-text-color)); backdrop-filter: var(--wiki-navigation-search-backdrop-filter, none); box-shadow: var(--wiki-navigation-search-box-shadow, none); border-image: var(--wiki-navigation-search-border-image, none); } #searchInput:focus, #searchform:hover #searchInput, #searchform:hover #searchInput:focus { border-color: var(--wiki-navigation-search-border-color--hover, var(--wiki-accent-color)); box-shadow: var(--wiki-navigation-search-box-shadow--hover, var(--wiki-navigation-search-box-shadow, none)); border-image: var(--wiki-navigation-search-border-image--hover, var(--wiki-navigation-search-border-image, none)); } #searchButton { filter: var(--wiki-icon-to-link-filter); } .vector-search-box-input::placeholder { color: var(--wiki-content-text-mix-color); } /* Search suggestions */ .suggestions-results, .suggestions-special { background-color: var(--wiki-content-background-color--secondary); } .suggestions a.mw-searchSuggest-link, .suggestions a.mw-searchSuggest-link:hover, .suggestions a.mw-searchSuggest-link:active, .suggestions a.mw-searchSuggest-link:focus { color: var(--wiki-content-text-color); } .suggestions-result { color: var(--wiki-content-link-color); } .suggestions-result-current { background-color: var(--wiki-accent-color); color: var(--wiki-accent-label-color); } .suggestions-special .special-label { color: var(--wiki-content-text-mix-color); } .suggestions-special .special-query { color: var(--wiki-content-text-color); } .suggestions-special.suggestions-result-current .special-label, .suggestions-special.suggestions-result-current .special-query { color: var(--wiki-accent-label-color); } /* search page */ fieldset#mw-searchoptions { background-color: color-mix(in srgb, var(--wiki-content-background-color--secondary) 50%, transparent); border-color: var(--wiki-content-border-color); } #mw-searchoptions .divider { border-color: var(--wiki-content-border-color); } .mw-search-profile-tabs { background-color: color-mix(in srgb, var(--wiki-content-background-color--secondary) 50%, transparent); border: 1px solid var(--wiki-content-border-color); margin-top: 1em; } .mw-search-profile-tabs div.search-types ul li.current a { color: var(--wiki-content-text-color); } .results-info, .mw-search-result-data { color: var(--wiki-content-text-mix-color); } /**/ /* Login/register page */ .mw-number-text { color: var(--wiki-content-text-mix-color); } .mw-body-content .mw-number-text h3 { color: var(--wiki-content-heading-color); } .mw-number-text.icon-edits, .mw-number-text.icon-pages, .mw-number-text.icon-contributors { position: relative; background: none; } .mw-number-text.icon-edits::before, .mw-number-text.icon-pages::before, .mw-number-text.icon-contributors::before { position: absolute; width: 95px; height: 100%; left: 0; top: 0; content: ''; filter: brightness(0) var(--wiki-icon-general-filter); } .mw-number-text.icon-edits::before { background: url(data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAFAAAABLCAYAAADnAAD1AAACrUlEQVR4AWL4//8/oH170LEsiKIwXGPbtm0EY9s2g7bdjzh4oVnjyslKVZ3hSu+d5L/c0Xdx/Bt5jjCyAR3QAd9/+DhSW4oeoYmJGQdM4HWjYfQKTXTA8pZFeIgjOmA5Hkd0wDwe6TWa6IAcr4eA5RAdEC0neKWIDoieFcMRRPOAaDJ6+4uITxzwJ+KbmnjdaKkDliISPIv/gcvRxsT7kzgix7MGuBz1ooFyRIq3xOJ64ArUG0EMoMV5RI5nAJDjRV1Go1DIIL7meJKAAngc8Qn/tgoACuCNRtfRJhQyGQLkeJcI3u3oP3GzA5bjjYnwEEE0Acjx+urgEcRNVgFX1sUjdaHF9gA53sW/jScFKIC3SH8hIo5nDXAVwbtA8O6U4+kD6uPpA2rhWQNcXYh3N4HXSfAMAHK8838BTwBQF28hCpKAAnj3SvCsAa4heOdU8NQB5fGUAfXxhAEZ3lmCdz+B18Hx9ABN46kBrv1DeAtQsAZYivdAB08AMMLrJ3hBHU8BkOGdqcyMLcCbj4I1QH08YUCGd0kbTwCQ4MW1oFkR3kM5PAHAdVU8gjhPEk8AkOKRBjN481AwAxjhDRCM4Rq1EzwTgAzvGtoqiicAmMcbjRZI4wkATiP/eVe/4QU0DvXJ4gkAHq9gNEV4cdPRRtQjgycAOA51VkAOoECaiF5J4QkA7iVnuI+vgTcXBauAo1BjBeU0mZuCXlfm2gieOcCN5KzPadH7s9EF1CeJJwD4lKy2BLQM3UFDaFgSTwBwKcE5il6Q1wmeA95KQLGafuI54Ay+I4D2Fm1HY2QwBADPZdCG0EO0Wg5CAHAi6k1ce3E1fdDHAQ8TuG50Ml6F4TngGNQawTWjg2iCPoAG4I5vcG/QVrLDIJMDnvyNBYMDeg7ogA7ogJ4DOqBmnwD4A/itR9A4HwAAAABJRU5ErkJggg==) no-repeat left center; } .mw-number-text.icon-pages::before { background: url(data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAFAAAABLCAYAAADnAAD1AAAByUlEQVR4Ae3XQ6JcQRhH8Rs7mYWT2LZt25rEtpNvicGCOid51lWhX3X/B78F1ClnjUZDHChCDgVUQAVUwF+//zTbaEzwJKuqFQJOwVOYB0fSDege8RnMg8OxA47HhMhGho4YM+BHWGTXMApZP1NxAqdKuIS3DhETC5gT0cEonM+LmH7A8BHHF4zhUMyAr3DKswt4ARvCVQ8RL8FyHIoV8DqyAEbidMCIu2AFDqUbEBiLd4EiroOVcDDdgMBJWI4rNSOugpV0MOWAa2EBIq6HVXAw1YDzYQEiboVVdCDFgLNhASIegtWwP7WAM2AVXC4Z8SKsho+pBZwDCxDxIZ7hGo5iN7ZgG/bjOj61QsB5sAARxyArMA7nUw+4GuYQcaSHv/PrlAPuhDnYh8zR9ZQDnoF1+ooXuI87uIvH+JoT8ES7B1yJxZiGETnbbAHuKqCbkbiqgG5mK6Cb8QqogAqogAqogAqogAqogAqogAqogAqogAqogAqogAqogAqogAqogAqogAqogAqogAqogG0acAwmVHRLAXschDlQQAVUwKYGXIZTDo7qFnakgAqogP4ooAK+waVh5GpSAROggAqogFKOAiqgAiqg/AUjJ7hc1MT1egAAAABJRU5ErkJggg==) no-repeat left center } .mw-number-text.icon-contributors::before { background: url(data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAFAAAAAtCAYAAAA5reyyAAAEMElEQVR4AWJ4/uLFYMJsgHbtIVhzLQqg8G7btm3bfLZt2/abtG3btm3btt19tXuNU5UbnV9VPfj2PCtODh7DaOzHDdzEIQxFG6SERItoilcPq6EOpqNsrAdMiWb4CQPQEx+jMsSH13Ad6tJRtIf4UBkfoyf642c0Q8pwBSyOEYiDWpzHP8gIcelZ3IV6dBENIS5lxD84D7WIwwgUD3XActjk8jTLDnFQAiegPm1FFoiD7JgKdbAJ5UIVMA0WQ10aCnEwHBrQ/xAHQ6EuLULqUAT8EurRkxAbtXEWGtBu5IPYeBLq0RemA6bDUqhHwyE2/oIa8qHho3wp0pkM2AS3oR4dRCmIFWZADRkEsUIpHIR6dBtNTAZ8DepDEhpDLIphL9Q9X0dMYyRBfXjNZMD3oT61hFjUwHmoITtQAGLREurT+yYDvgn1IQ4NwhBwP0pALBogDurDmyYDPgL14QjKQCzK43gYjsAyOAL14RGTAcvhKNSjWUgLsciDzVBDliG9zceJWT53fFlzAYGJUI/+g9iYCjVkBMTGv1CPJkJMB/wM6sEdtILY6Aw15A+IjVa4A/Xgs1C9ym2AujQVkoznkQgN6CpaQAwd7euQynxA4EMkuTz6noAkIxu2QQNaAXHwhMujMAkfhvpz1gSogwEQF/pAA/oV4sIAqIPxkFAHLIwVUBuLkQ/iQkNchPp0BHkhLuTDYocjuVDoAwLNobCKx7MQZ0buxn9CPHgO8VBYNYOEI2AxTIPaWI3SEJdq47rPz1jZIC6VxmqHm17RUAYsjm+wB+rgDH5FZYgL/0M9egjiQmX8hjNQB3vwDYqZClgRn2I8TkM9uoxp+BY1IDayYAnUpd8hyaiBbzEdl6EencZ4fIoKXgPWQ0eswTmoIRexCz9DYFUWh6AOeiEFBFYfYYv7aK6cxRp0RL3kAjbBSsRBQ+gwykBg1SrAF+5qOAUNoTisRBNrwHeQAA2D7hAbLQL+qOoBDYMEvA0RRm3cg4bQIYxBO4iNnFgOdfAoJBntMAaHoSF0D7WtbwOmJGIHBuFtFHJxhx8HdeEEnoI4KIS3MQg7kAg1rI8w9kMN2YQ/8RByQRwUxE844GPvj0B9iAu58BD+NPwdcp8wrkEDOoG3kR3iIC0exhAcgQZwHQvwOfJDXMiOt3ECGtA1EwH3oDLERgoUxisYhv24AzUoEWexCD+iJtJBklEF+yId8A7aQywyoCK+xCJcRSI0TO5iL7qjDXIjBcTiIdwNGnAetmKjR8fQHdYL93tYiSRolDiJzqgLseiOYz62fyvmCcOUJ3EAGuV6oUi0rVD9BBpDtqJstARsj3hojFmBdNEQcDw0Rn0V6YAVcBIao2YjXSQDtoDGsDOoFMmAD0FjXLMHAYN5KJIBW+FBwADq4x40hrWLZMCKOIhEXIsxd3EdDSF+3QeCfPkMAgchOAAAAABJRU5ErkJggg==) no-repeat left center } /**/ /* Multimedia viewer */ .mw-mmv-post-image, .mw-mmv-image-metadata { background-color: var(--wiki-content-background-color); border-color: var(--wiki-content-border-color); color: var(--wiki-content-text-color); } .mw-mmv-ttf-container .mw-mmv-ttf-ellipsis { box-shadow: -4px 6px 0 0 var(--wiki-content-background-color); } .mw-mmv-title-para .mw-mmv-ttf-ellipsis { background-color: var(--wiki-content-background-color); } .mw-mmv-title-para .mw-mmv-ttf-ellipsis::before { background-image: linear-gradient(to right, transparent 0%, var(--wiki-content-background-color) 100%); } .mw-mmv-ttf-ellipsis-container:hover .mw-mmv-ttf-container .mw-mmv-ttf-ellipsis { background-color: var(--wiki-content-background-color--secondary); } .mw-mmv-ttf-container .mw-mmv-ttf-ellipsis:hover, .mw-mmv-ttf-ellipsis-container .mw-mmv-ttf-container .mw-mmv-ttf-ellipsis:hover { background-color: color-mix(in srgb, var(--wiki-content-background-color--secondary) 95%, var(--wiki-content-dynamic-color)); } .mw-ui-button.mw-ui-progressive:not(:disabled) { background-color: var(--wiki-accent-color); border-color: var(--wiki-accent-color); color: var(--wiki-accent-label-color); } .mw-ui-button.mw-ui-progressive:not(:disabled):hover { background-color: var(--wiki-accent-color--hover); } .skin-vector .mw-ui-button.mw-ui-progressive:hover, .skin-vector .mw-ui-button.mw-ui-primary:disabled { box-shadow: 0px 0px 16px rgba(0, 0, 0, 0.75) inset, 0 0 5px var(--wiki-content-border-color); border: 2px solid var(--wiki-content-border-color); } .mw-ui-button.mw-ui-progressive:not(:disabled):active, .mw-ui-button.mw-ui-progressive:not(:disabled).is-on { background-color: var(--wiki-accent-color); border-color: var(--wiki-accent-color); } .mw-ui-button.mw-ui-progressive { box-shadow: 0px 0px 16px rgba(0, 0, 0, 0.75) inset, 0 0 5px var(--wiki-content-border-color) } /* possibly deprecated */ .mw-ui-input:not(:disabled) { background-color: var(--wiki-content-background-color--secondary); border: 1px solid var(--wiki-content-border-color); color: var(--wiki-content-text-color); } .mw-ui-input:not(:disabled):hover, .mw-ui-input:not(:disabled):focus { background-color: var(--wiki-content-background-color--secondary); color: var(--wiki-content-text-color); border-color: var(--wiki-accent-color); box-shadow: none; } .mw-ui-input::placeholder { color: var(--wiki-content-text-mix-color); } /* end possibly deprecated */ .mw-mmv-dialog { background-color: var(--wiki-content-background-color); box-shadow: 0 2px 2px 0 var(--wiki-content-border-color); } .mw-mmv-dialog .mw-mmv-dialog-down-arrow { background-color: var(--wiki-content-background-color); } .mw-mmv-options-dialog-header { color: var(--wiki-content-text-color); } .mw-mmv-options-text-header, .mw-mmv-options-text-body { color: var(--wiki-content-text-mix-color); } .mw-mmv-download-pane .mw-mmv-download-area .mw-mmv-download-select-menu { background-image: none; } .mw-mmv-download-pane .mw-mmv-download-area .mw-mmv-download-select-menu span { display: none; } .mw-mmv-download-pane .mw-mmv-download-area .mw-mmv-download-select-menu::after { display: inline-block; width: 8px; height: 100%; content: ''; --mask: url("data:image/svg+xml,%3Csvg xmlns=%22http://www.w3.org/2000/svg%22 width=%2212%22 height=%2212%22 viewBox=%220 0 12 12%22%3E %3Cpath fill=%22%23000%22 fill-rule=%22evenodd%22 d=%22m2.023 3 3.49 5.953L9 3z%22 clip-rule=%22evenodd%22/%3E %3C/svg%3E") no-repeat; --mask-size: 12px; --mask-position: center; -webkit-mask: var(--mask); mask: var(--mask); -webkit-mask-size: var(--mask-size); mask-size: var(--mask-size); -webkit-mask-position: var(--mask-position); mask-position: var(--mask-position); background-color: currentColor; } .mw-mmv-embed-dimensions { color: color-mix(in srgb, var(--wiki-content-text-color) 76%, transparent); } .oo-ui-optionWidget-selected .mw-mmv-embed-dimensions { color: color-mix(in srgb, var(--wiki-content-text-color) 82%, transparent); } .mw-mmv-download-pane .mw-mmv-download-attribution { background-color: var(--wiki-content-background-color--secondary); color: var(--wiki-content-text-mix-color); } .mw-mmv-download-pane .mw-mmv-download-attribution:hover { background-color: var(--wiki-content-dynamic-color--inverted); color: var(--wiki-content-text-color); } .mw-mmv-download-pane .mw-mmv-download-area .mw-mmv-download-preview-link, .mw-mmv-download-pane .mw-mmv-download-attribution-cta-invite { color: var(--wiki-content-text-mix-color); } .mw-ui-button.mw-ui-quiet, .mw-ui-button.mw-ui-quiet.mw-ui-progressive, .mw-ui-button.mw-ui-quiet.mw-ui-destructive { color: var(--wiki-accent-color); } .mw-ui-button.mw-ui-progressive:not(:disabled):focus { box-shadow: inset 0 0 0 1px rgba(0, 0, 0, 1), inset 0 0 0 2px var(--wiki-accent-color); } input[type="checkbox"]:active + .mw-ui-button.mw-ui-quiet, input[type="checkbox"]:active + .mw-ui-button.mw-ui-quiet.mw-ui-progressive, input[type="checkbox"]:active + .mw-ui-button.mw-ui-quiet.mw-ui-destructive, .mw-ui-button.mw-ui-quiet:active, .mw-ui-button.mw-ui-quiet.mw-ui-progressive:active, .mw-ui-button.mw-ui-quiet.mw-ui-destructive:active, input[type="checkbox"]:focus + .mw-ui-button.mw-ui-quiet, input[type="checkbox"]:focus + .mw-ui-button.mw-ui-quiet.mw-ui-progressive, input[type="checkbox"]:focus + .mw-ui-button.mw-ui-quiet.mw-ui-destructive, .mw-ui-button.mw-ui-quiet:focus, .mw-ui-button.mw-ui-quiet.mw-ui-progressive:focus, .mw-ui-button.mw-ui-quiet.mw-ui-destructive:focus { color: var(--wiki-content-text-color); } /**/ /* Echo */ .oo-ui-buttonElement-framed.oo-ui-widget-enabled.oo-ui-optionWidget-selected > .oo-ui-buttonElement-button:hover { color: var(--wiki-accent-label-color); } .oo-ui-buttonElement-framed.oo-ui-widget-enabled > .oo-ui-buttonElement-button:hover { color: var(--wiki-content-text-color); } @-webkit-keyframes unseen-fadeout-to-unread { from { background-color: color-mix(in srgb, var(--wiki-accent-color) 20%, transparent); } to { background-color: var(--wiki-content-background-color--secondary); } } @keyframes unseen-fadeout-to-unread { from { background-color: color-mix(in srgb, var(--wiki-accent-color) 20%, transparent); } to { background-color: var(--wiki-content-background-color--secondary); } } @-webkit-keyframes unseen-fadeout-to-read { from { background-color: color-mix(in srgb, var(--wiki-accent-color) 20%, transparent); } to { background-color: var(--wiki-content-background-color); } } @keyframes unseen-fadeout-to-read { from { background-color: color-mix(in srgb, var(--wiki-accent-color) 20%, transparent); } to { background-color: var(--wiki-content-background-color); } } .oo-ui-popupWidget-anchored-top .oo-ui-popupWidget-anchor:before { border-bottom-color: var(--wiki-content-border-color); } .oo-ui-popupWidget-anchored-top .oo-ui-popupWidget-anchor:after { border-bottom-color: var(--wiki-content-background-color--secondary); } .client-js .mw-echo-special-nojs { filter: var(--wiki-icon-general-filter) } /**/ /* codex fixes */ .cdx-checkbox__icon { background-color: color-mix(in srgb, var(--wiki-accent-color) 5%, transparent); } .mw-echo-ui-toggleReadCircleButtonWidget:hover .mw-echo-ui-toggleReadCircleButtonWidget-circle { background-color: var(--wiki-accent-color--hover); } .mw-echo-ui-toggleReadCircleButtonWidget-circle-unread { background-color: transparent; } .mw-echo-ui-toggleReadCircleButtonWidget:hover .mw-echo-ui-toggleReadCircleButtonWidget-circle-unread { background-color: var(--wiki-content-text-mix-color-95); } /**/ /* make the upload form and file pages responsive */ #wpDestFile, #wpUploadDescription, #wpLicense, #wpUploadFile, #multiFileCategory { /* max-width does not work here, but setting width has negligible side effects */ width:100%; box-sizing:border-box; } #mw_metadata { max-width:100%; } /************************* * End Vector theme fixes * **************************/ /************************ * Theme-based Scribunto * *************************/ .mw-scribunto-console-fieldset, .mw-scribunto-message, .mw-scribunto-input, .mw-scribunto-print, .mw-scribunto-normalOutput { color: var(--wiki-content-text-color); } /**************** * End Scribunto * *****************/ /*************************** * Theme-based VisualEditor * ****************************/ .ve-activated .vector-menu-tabs .selected { box-shadow: none; } .ve-init-mw-progressBarWidget { background-color: var(--wiki-content-background-color); border-color: var(--wiki-accent-color); box-shadow: 0 1px 1px color-mix(in srgb, var(--wiki-content-dynamic-color) 15%, transparent); } .ve-init-mw-progressBarWidget-bar { background-color: var(--wiki-accent-color); } .ve-init-mw-desktopArticleTarget-toolbarPlaceholder-bar { border-bottom-color: var(--wiki-content-border-color); } .ve-init-mw-desktopArticleTarget-toolbarPlaceholder-floating .ve-init-mw-desktopArticleTarget-toolbarPlaceholder-bar { top: var(--wikigg-header-scroll-height, 0); background: var(--wiki-content-background-color); } div.ve-ce-branchNode { border-color: var(--wiki-content-border-color); } .ve-ce-focusableNode-highlight { background: var(--wiki-accent-color); box-shadow: inset 0 0 0 1px var(--wiki-accent-color); } .ve-ce-surface-highlights-focused .ve-ce-focusableNode-highlights { opacity: 0.25; } .ve-ce-branchNode-blockSlug, .ve-ce-branchNode-newSlug:not(.ve-ce-branchNode-newSlug-open) { outline-color: var(--wiki-accent-color); background-color: color-mix(in srgb, var(--wiki-content-dynamic-color--inverted) 75%, transparent); } figure[typeof~='mw:File/Thumb'], figure[typeof~='mw:File/Frame'], figure[typeof~='mw:Image/Thumb'], figure[typeof~='mw:Video/Thumb'], figure[typeof~='mw:Audio/Thumb'], figure[typeof~='mw:Image/Frame'], figure[typeof~='mw:Video/Frame'], figure[typeof~='mw:Audio/Frame'] { border-color: var(--wiki-content-border-color); background-color: var(--wiki-content-background-color--secondary); } figure[typeof~='mw:File/Thumb'] > a:first-child > *:first-child:not(.mw-broken-media), figure[typeof~='mw:File/Frame'] > a:first-child > *:first-child:not(.mw-broken-media), figure[typeof~='mw:Image/Thumb'] > a:first-child > *:first-child:not(.mw-broken-media), figure[typeof~='mw:Video/Thumb'] > a:first-child > *:first-child:not(.mw-broken-media), figure[typeof~='mw:Audio/Thumb'] > a:first-child > *:first-child:not(.mw-broken-media), figure[typeof~='mw:Image/Frame'] > a:first-child > *:first-child:not(.mw-broken-media), figure[typeof~='mw:Video/Frame'] > a:first-child > *:first-child:not(.mw-broken-media), figure[typeof~='mw:Audio/Frame'] > a:first-child > *:first-child:not(.mw-broken-media), figure[typeof~='mw:File/Thumb'] > span:first-child > *:first-child:not(.mw-broken-media), figure[typeof~='mw:File/Frame'] > span:first-child > *:first-child:not(.mw-broken-media), figure[typeof~='mw:Image/Thumb'] > span:first-child > *:first-child:not(.mw-broken-media), figure[typeof~='mw:Video/Thumb'] > span:first-child > *:first-child:not(.mw-broken-media), figure[typeof~='mw:Audio/Thumb'] > span:first-child > *:first-child:not(.mw-broken-media), figure[typeof~='mw:Image/Frame'] > span:first-child > *:first-child:not(.mw-broken-media), figure[typeof~='mw:Video/Frame'] > span:first-child > *:first-child:not(.mw-broken-media), figure[typeof~='mw:Audio/Frame'] > span:first-child > *:first-child:not(.mw-broken-media) { border-color: var(--wiki-content-border-color); background: var(--wiki-content-background-color--secondary); } figure[typeof~='mw:File/Thumb'] > figcaption, figure[typeof~='mw:File/Frame'] > figcaption, figure[typeof~='mw:Image/Thumb'] > figcaption, figure[typeof~='mw:Video/Thumb'] > figcaption, figure[typeof~='mw:Audio/Thumb'] > figcaption, figure[typeof~='mw:Image/Frame'] > figcaption, figure[typeof~='mw:Video/Frame'] > figcaption, figure[typeof~='mw:Audio/Frame'] > figcaption { background-color: var(--wiki-content-background-color--secondary); border-color: var(--wiki-content-border-color); } .ve-ui-specialCharacterPage-character, .oo-ui-toolbar-position-top .ve-ui-toolbarDialog-position-above, .oo-ui-bookletLayout > .oo-ui-menuLayout-menu, .ve-ui-mwTwoPaneTransclusionDialogLayout > .oo-ui-menuLayout-menu, .ve-ui-specialCharacterPage-character:hover { border-color: var(--wiki-content-border-color); } .ve-ui-specialCharacterPage-character:hover { box-shadow: inset 0 0 1px 1px var(--wiki-accent-color); } .oo-ui-listToolGroup-tools .oo-ui-tool.oo-ui-widget-disabled .oo-ui-tool-title, .oo-ui-popupToolGroup-tools .oo-ui-tool-link .oo-ui-tool-accel { color: var(--wiki-content-text-mix-color); } .oo-ui-barToolGroup-tools.oo-ui-toolGroup-enabled-tools .oo-ui-tool.oo-ui-widget-disabled.oo-ui-flaggedElement-primary > .oo-ui-tool-link .oo-ui-tool-title, .oo-ui-barToolGroup-tools.oo-ui-toolGroup-disabled-tools .oo-ui-tool.oo-ui-flaggedElement-primary > .oo-ui-tool-link .oo-ui-tool-title { color: color-mix(in srgb, var(--wiki-content-dynamic-color--inverted) 78%, transparent); } .ve-activated .ve-init-mw-desktopArticleTarget-originalContent #catlinks:hover { background: color-mix(in srgb, var(--wiki-content-link-color) 10%, transparent); } .oo-ui-tabSelectWidget-frameless .oo-ui-tabOptionWidget.oo-ui-optionWidget-selected { color: var(--wiki-accent-color); box-shadow: inset 0 -2px 0 0 var(--wiki-accent-color); } .oo-ui-tabOptionWidget { color: var(--wiki-content-text-mix-color); } .oo-ui-tabSelectWidget-frameless .oo-ui-tabOptionWidget.oo-ui-widget-enabled:not(.oo-ui-optionWidget-selected):hover { color: var(--wiki-accent-color--hover); box-shadow: inset 0 -2px 0 0 var(--wiki-accent-color--hover); } .oo-ui-tabSelectWidget-frameless .oo-ui-tabOptionWidget.oo-ui-widget-enabled:not(.oo-ui-optionWidget-selected):active { color: var(--wiki-content-text-color); box-shadow: inset 0 -2px 0 0 var(--wiki-accent-color--hover); } .oo-ui-tabSelectWidget-frameless { box-shadow: inset 0 -1px 0 0 var(--wiki-content-border-color); } .oo-ui-textInputWidget.oo-ui-widget-enabled.oo-ui-flaggedElement-invalid .oo-ui-inputWidget-input { border-color: var(--wiki-alert-color); } .ve-ce-linkAnnotation.ve-ce-annotation-active { box-shadow: 0 0 0 1px color-mix(in srgb, var(--wiki-content-link-color) 20%, transparent); background-color: color-mix(in srgb, var(--wiki-content-link-color) 10%, transparent); } .ve-ui-mwInternalLinkContextItem-withImage > .oo-ui-iconElement.oo-ui-iconElement-icon { background-color: color-mix(in srgb, var(--wiki-content-text-mix-color-95) 90%, var(--wiki-content-dynamic-color)); border-color: color-mix(in srgb, var(--wiki-content-text-mix-color-95) 90%, var(--wiki-content-dynamic-color)); filter: unset; } .mw-widget-titleWidget-menu-withImages .mw-widget-titleOptionWidget.oo-ui-iconElement > .oo-ui-iconElement-icon.mw-widget-titleOptionWidget-hasImage { filter: unset; } .mw-widget-titleWidget-menu-withImages .mw-widget-titleOptionWidget.oo-ui-iconElement > .oo-ui-iconElement-icon:not(.mw-widget-titleOptionWidget-hasImage) { background-color: color-mix(in srgb, var(--wiki-content-text-mix-color-95) 90%, var(--wiki-content-dynamic-color)); filter: unset; } .ve-ui-desktopContext .ve-ui-linkContextItem .ve-ui-linkContextItem-label .ve-ui-linkContextItem-label-preview { color: var(--wiki-content-text-mix-color); } .ve-ui-toolbarDialog { background-color: color-mix(in srgb, var(--wiki-content-dynamic-color) 5%, transparent); } .ve-ce-languageAnnotation { background-color: color-mix(in srgb, var(--wiki-content-dynamic-color) 20%, transparent); border-color: var(--wiki-content-link-color); } .mw-widget-mediaResultWidget-overlay { box-shadow: inset 0 0 0 1px var(--wiki-content-border-color); } .mw-widget-mediaResultWidget .mw-widget-mediaResultWidget-nameLabel { color: #fff; } .oo-ui-processDialog-actions-safe .oo-ui-widget-enabled.oo-ui-iconElement:not(.oo-ui-labelElement) > .oo-ui-buttonElement-button { background-color: transparent; border-right-color: color-mix(in srgb, var(--wiki-accent-color) 50%, transparent); } .oo-ui-selectFileWidget-dropTarget { background-color: var(--wiki-content-background-color); border-color: var(--wiki-content-border-color); } .oo-ui-selectFileWidget.oo-ui-widget-enabled.oo-ui-selectFileWidget-dropTarget { background-color: var(--wiki-content-background-color); } .oo-ui-selectFileWidget.oo-ui-widget-enabled.oo-ui-selectFileWidget-dropTarget:hover { border-color: var(--wiki-content-text-mix-color); } .oo-ui-selectFileWidget.oo-ui-widget-enabled.oo-ui-selectFileWidget-canDrop.oo-ui-selectFileWidget-dropTarget, .oo-ui-selectFileWidget.oo-ui-widget-enabled.oo-ui-selectFileWidget-canDrop .oo-ui-selectFileInputWidget-info > .oo-ui-inputWidget-input { background-color: color-mix(in srgb, var(--wiki-accent-color) 10%, transparent); color: var(--wiki-accent-color); } .oo-ui-selectFileWidget.oo-ui-widget-disabled.oo-ui-selectFileWidget-dropTarget, .oo-ui-selectFileWidget.oo-ui-selectFileInputWidget-empty.oo-ui-widget-disabled.oo-ui-selectFileWidget-dropTarget { background-color: var(--wiki-content-text-mix-color-95); border-color: var(--wiki-content-dynamic-color--secondary); } .mw-upload-bookletLayout-filePreview { background-color: var(--wiki-content-background-color--secondary); } .ve-ui-mwMediaDialog-panel-imageinfo-details { color: var(--wiki-content-text-mix-color); } .oo-ui-textInputWidget.oo-ui-widget-disabled .oo-ui-inputWidget-input { -webkit-text-fill-color: color-mix(in srgb, var(--wiki-content-text-color) 50%, transparent); } .oo-ui-optionWidget.oo-ui-widget-disabled { color: var(--wiki-content-text-mix-color); } .ve-ui-mwLanguagesPage-languages-table th, .ve-ui-mwLanguagesPage-languages-table td { border-bottom-color: var(--wiki-content-border-color); } .ve-ui-mwLanguagesPage-languages-table tr:nth-child(even) td { background: var(--wiki-content-background-color); } .ve-ui-mwLanguagesPage-languages-table tr:nth-child(odd) td { background: color-mix(in srgb, var(--wiki-content-dynamic-color--secondary) 5%, transparent); } .ve-ui-targetWidget { border-color: var(--wiki-content-border-color); } .ve-ui-targetWidget:not(.oo-ui-pendingElement-pending) { background: var(--wiki-content-background-color); } .ve-ui-targetWidget-focused { border-color: var(--wiki-accent-color); box-shadow: inset 0 0 0 1px var(--wiki-accent-color); } .ve-ui-mwTransclusionOutlineTemplateWidget-sticky { background-color: var(--wiki-content-background-color); } .ve-ui-mwTransclusionOutlineTemplateWidget .ve-ui-mwTransclusionOutlineParameterWidget.oo-ui-optionWidget-highlighted { color: var(--wiki-content-dynamic-color); } .ve-ui-mwTransclusionOutlineTemplateWidget .ve-ui-mwTransclusionOutlineParameterWidget.ve-ui-mwTransclusionOutlineParameterWidget-activePage, .ve-ui-mwTransclusionOutlineTemplateWidget .ve-ui-mwTransclusionOutlineParameterWidget.ve-ui-mwTransclusionOutlineParameterWidget-activePage:hover, .ve-ui-mwTransclusionOutlineTemplateWidget .ve-ui-mwTransclusionOutlineParameterWidget.ve-ui-mwTransclusionOutlineParameterWidget-activePage.oo-ui-optionWidget-highlighted { color: var(--wiki-accent-color); } .ve-ui-mwTransclusionOutlineTemplateWidget-no-template-parameters { color: var(--wiki-content-text-mix-color); } .ve-ui-mwTemplatePage-description { color: var(--wiki-content-text-mix-color); } .ve-ui-mwParameterPage-doc-required, .ve-ui-mwParameterPage-doc-deprecated, .ve-ui-mwParameterPage-inlineDescription .ve-ui-mwParameterPage-doc-example { color: var(--wiki-content-text-mix-color); } .ve-ui-expandableContent-fade { background: linear-gradient(to right, transparent 0, var(--wiki-content-background-color) 90%); } .ve-ui-expandableContent-toggle { background-color: var(--wiki-content-background-color); } .ve-ui-mwParameterPage-undocumentedLabel { color: var(--wiki-content-text-mix-color); } .oo-ui-fieldLayout-disabled > .oo-ui-fieldLayout-body > .oo-ui-fieldLayout-header > .oo-ui-labelElement-label { color: var(--wiki-content-text-mix-color); } .ve-ui-mwLatexDialog-content .oo-ui-bookletLayout-stackLayout h3 { color: var(--wiki-content-text-mix-color); } .ve-ui-mwLatexPage-symbol { border-color: var(--wiki-content-border-color); } .ve-ui-mwGalleryDialog-highlighted-image { background-color: var(--wiki-content-background-color--secondary); } .ve-ui-mwHelpListToolGroup-tools-footer { border-color: var(--wiki-content-border-color); } .ve-ui-mwHelpListToolGroup-version-link, .ve-ui-mwHelpListToolGroup-version-date, .ve-ui-mwHelpPopupTool-version-label, .ve-ui-mwHelpPopupTool-version-link, .ve-ui-mwHelpPopupTool-version-date { color: var(--wiki-content-text-mix-color); } .ve-ui-mwSaveDialog-summary { background-color: var(--wiki-content-background-color); } .ve-ui-mwSaveDialog-options { background-color: var(--wiki-content-background-color--secondary); border-color: var(--wiki-content-border-color); } .ve-ui-mwSaveDialog-license { color: var(--wiki-content-text-mix-color); } .oo-ui-processDialog .oo-ui-actionWidget:not(.oo-ui-flaggedElement-progressive):not(.oo-ui-flaggedElement-destructive) > .oo-ui-buttonElement-button:hover, .oo-ui-processDialog .oo-ui-actionWidget:not(.oo-ui-flaggedElement-progressive):not(.oo-ui-flaggedElement-destructive) > .oo-ui-buttonElement-button:active { border-right-color: var(--wiki-accent-color); border-left-color: var(--wiki-accent-color); } .ve-ui-debugBar { border-color: var(--wiki-content-border-color); } .ve-ui-debugBar-commands-divider { border-color: var(--wiki-content-border-color); } .ve-ui-debugBar-dump > table { background-color: var(--wiki-content-background-color--secondary); border-color: var(--wiki-content-border-color); } .ve-ui-debugBar-dump td { background-color: var(--wiki-content-background-color); } .ve-ui-debugBar-dump th { color: color-mix(in srgb, var(--wiki-content-text-color) 80%, transparent); text-shadow: 0 1px 1px var(--wiki-content-dynamic-color--inverted); } .ve-ui-debugBar-dump ol { color: color-mix(in srgb, var(--wiki-content-text-color) 60%, transparent); } .ve-ui-debugBar-dump li .ve-ui-debugBar-dump-element, .ve-ui-debugBar-dump li .ve-ui-debugBar-dump-char, .ve-ui-debugBar-dump li .ve-ui-debugBar-dump-achar { background-color: var(--wiki-content-background-color--secondary); color: var(--wiki-content-dynamic-color); text-shadow: 0 1px 1px var(--wiki-content-dynamic-color--inverted); } .ve-ui-debugBar-dump li .ve-ui-debugBar-dump-element { background-color: color-mix(in srgb, var(--wiki-accent-color) 20%, transparent); } .ve-ui-debugBar-dump li .ve-ui-debugBar-dump-char { background-color: color-mix(in srgb, var(--wiki-success-color) 20%, transparent); } .ve-ui-debugBar-dump li .ve-ui-debugBar-dump-achar { background-color: color-mix(in srgb, var(--wiki-warning-color) 20%, transparent); } .ve-ui-debugBar-dump li .ve-ui-debugBar-dump-note { color: var(--wiki-content-text-mix-color); } .ve-ui-debugBar-filibuster { background-color: var(--wiki-content-background-color--secondary); border-color: var(--wiki-content-border-color); } .ve-ui-debugBar-transactions > ol > li { border-color: var(--wiki-content-border-color); } /******************* * End VisualEditor * ********************/ /************************** * Theme-based AbuseFilter * ***************************/ table.mw-abuselog-details { background: var(--wiki-content-background-color); border-color: var(--wiki-content-border-color); } table.mw-abuselog-details th, table.mw-abuselog-details td, div.mw-abusefilter-editor { border-color: var(--wiki-content-border-color); } table.mw-abuselog-details th { background: var(--wiki-content-background-color--secondary); } body td.mw-abusefilter-history-changed { background-color: color-mix(in srgb, var(--wiki-alert-color) 20%, transparent); } /****************** * End AbuseFilter * *******************/ /************************************ * Theme-based Special:MultiPageEdit * *************************************/ :root { --jexcel-border-color: var(--wiki-content-border-color); /* this is defined by the extension but does not seem to be used anywhere. We override it just in case *shrug* */ } .jexcel, .jexcel_container.fullscreen .jexcel_content { background-color: var(--wiki-content-background-color); border-bottom-color: var(--wiki-content-border-color); border-right-color: var(--wiki-content-border-color); } table.jexcel > tbody > tr > td:first-child, table.jexcel > thead, table.jexcel > thead > tr > td, table.jexcel > tbody > tr.selected > td:first-child, table.jexcel > thead > tr > td.selected { background-color: var(--wiki-content-background-color--secondary); } table.jexcel > tbody > tr.selected > td:first-child, table.jexcel > thead > tr > td.selected { background-color: color-mix(in srgb, var(--wiki-accent-color) 10%, transparent); } table.jexcel > thead > tr > td { border-bottom-color: var(--wiki-content-border-color); } .jexcel > thead > tr > td.arrow-up, .jexcel > thead > tr > td.arrow-down { background: none; } .jexcel > thead > tr > td.arrow-up::after, .jexcel > thead > tr > td.arrow-down::after { display: inline-block; position: absolute; right: 0; top: 0; background-repeat: no-repeat; background-position: center right 5px; width: 22px; height: 100%; content: ''; filter: brightness(50%) var(--wiki-icon-general-filter); } .jexcel > thead > tr > td.arrow-up::after { background-image: url("data:image/svg+xml,%0A%3Csvg xmlns='http://www.w3.org/2000/svg' width='24' height='24' viewBox='0 0 24 24'%3E%3Cpath fill='none' d='M0 0h24v24H0V0z'/%3E%3Cpath d='M7 14l5-5 5 5H7z' fill='gray'/%3E%3C/svg%3E"); } .jexcel > thead > tr > td.arrow-down::after { background-image: url("data:image/svg+xml,%0A%3Csvg xmlns='http://www.w3.org/2000/svg' width='24' height='24' viewBox='0 0 24 24'%3E%3Cpath fill='none' d='M0 0h24v24H0V0z'/%3E%3Cpath d='M7 10l5 5 5-5H7z' fill='gray'/%3E%3C/svg%3E"); } .jexcel > thead > tr:nth-child(2) > td { z-index: 1; /* prevents overlapping the headings after scrolling on tall tables */ } .jexcel > tbody > tr > td { border-top-color: var(--wiki-content-text-mix-color-95); border-bottom-color: var(--wiki-content-text-mix-color-95); } .jexcel > tbody > tr > td.readonly { color: var(--wiki-content-text-mix-color); } .jexcel_content { scrollbar-color: var(--wiki-content-text-mix-color) transparent; /* we need this important to override inline styling */ box-shadow: var(--wiki-content-dynamic-color--secondary--inverted) 2px 2px 5px 0.1px !important; } .jexcel .highlight { background-color: color-mix(in srgb, var(--wiki-content-dynamic-color) 5%, transparent); } .jexcel .highlight-top { border-top-color: var(--wiki-content-text-mix-color); box-shadow: 0px -1px var(--wiki-content-dynamic-color--secondary--inverted); } .jexcel .highlight-left { border-left-color: var(--wiki-content-text-mix-color); box-shadow: -1px 0px var(--wiki-content-dynamic-color--secondary--inverted); } .jexcel .highlight-top.highlight-left { box-shadow: -1px -1px var(--wiki-content-dynamic-color--secondary--inverted); } .jexcel .highlight-right { border-right-color: var(--wiki-content-text-mix-color); } .jexcel .highlight-bottom { border-bottom-color: var(--wiki-content-text-mix-color); } .jexcel .jexcel_column_filter { background: none; } .jexcel .jexcel_column_filter::after { display: inline-block; position: absolute; right: 0; top: 0; background-repeat: no-repeat; background-position: top 50% right 5px; background-image: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24' fill='gray' width='18px' height='18px'%3E%3Cpath d='M10 18h4v-2h-4v2zM3 6v2h18V6H3zm3 7h12v-2H6v2z'/%3E%3Cpath d='M0 0h24v24H0z' fill='none'/%3E%3C/svg%3E"); width: 20px; height: 100%; content: ''; filter: brightness(50%) var(--wiki-icon-general-filter); } .jexcel_pagination > div > div { background-color: var(--wiki-accent-color); /* we need this important to override a built-in one */ color: var(--wiki-accent-label-color) !important; } .jexcel_page_selected { background: linear-gradient(to bottom, var(--wiki-accent-color) 0%, var(--wiki-accent-color--hover) 100%); /* we need this important to override a built-in one */ border: 1px solid var(--wiki-content-border-color) !important; } /**************************** * End Special:MultiPageEdit * *****************************/ /*********************** * Theme-based msupload * ************************/ #msupload-div, #msupload-list .file { background-color: var(--wiki-content-background-color); border-color: var(--wiki-content-border-color); } #msupload-select { filter: brightness(0) var(--wiki-icon-to-link-filter); } #msupload-dropzone { border-color: var(--wiki-content-border-color); color: var(--wiki-content-text-color); } .drop-over { background-color: var(--wiki-accent-color); color: var(--wiki-accent-label-color) !important; } #msupload-bottom { border-color: var(--wiki-content-border-color); } #msupload-bottom #msupload-files { padding-left: 0; background: none; } #msupload-bottom #msupload-files::before { display: inline-block; background: url(/extensions/MsUpload/resources/images/msu-upload-icon.png?bdd61) no-repeat 0 0; background-position: left center; height: 22px; width: 25px; content: ''; vertical-align: top; filter: var(--wiki-icon-general-filter); } #msupload-list .file .file-size { color: var(--wiki-content-text-mix-color); } #msupload-div a { color: var(--wiki-content-link-color); } #msupload-list .file .file-name:hover { background-color: var(--wiki-content-dynamic-color--inverted); } #msupload-list .file .file-name-input { background: var(--wiki-content-dynamic-color--inverted); } #msupload-list .file .file-warning { color: var(--wiki-warning-color); } /*************************** * End theme-based msupload * ****************************/ /***************************** * Theme-based commentstreams * ******************************/ .cs-title-edit-field { border-color: var(--wiki-accent-color); } .cs-title-edit-field::placeholder, .view-dark .cs-body-edit-field::placeholder { color: var(--wiki-content-text-mix-color); } .cs-edit-box, .cs-expanded .cs-comment-header { background-color: var(--wiki-content-background-color--secondary); border-color: var(--wiki-content-border-color); } .cs-target-comment .cs-comment-header { border-color: var(--wiki-accent-color); } .cs-comment-author a { color: var(--wiki-content-link-color); } .cs-comment-details { color: color-mix(in srgb, var(--wiki-content-text-color) 95%, transparent); } .cs-comment-author-anonymous { color: color-mix(in srgb, var(--wiki-content-text-color) 95%, transparent); } .cs-comment { border: 1px solid var(--wiki-content-border-color); } .cs-comment-body { padding: 0 5px; } /********************************* * End theme-based commentstreams * **********************************/ /************************ * Theme-based checkuser * *************************/ .mw-datatable.ext-checkuser-investigate-table tr:hover td { background-color: var(--wiki-content-background-color); } .mw-datatable.ext-checkuser-investigate-table th { background-color: var(--wiki-content-background-color--secondary); } .ext-checkuser-investigate-table.mw-datatable.ext-checkuser-investigate-table-pinned .ext-checkuser-investigate-table-row-pinned td, .ext-checkuser-investigate-table.mw-datatable.ext-checkuser-investigate-table-pinned .ext-checkuser-investigate-table-row-pinned-data-match td, .ext-checkuser-investigate-table.mw-datatable:not(.ext-checkuser-investigate-table-pinned) .ext-checkuser-investigate-table-row-hover-data-match td, .ext-checkuser-investigate-table.mw-datatable:not(.ext-checkuser-investigate-table-pinned) tr:hover td { background-color: color-mix(in srgb, var(--wiki-warning-color) 10%, transparent); } .ext-checkuser-investigate-table.mw-datatable.ext-checkuser-investigate-table-pinned .ext-checkuser-investigate-table-row-pinned td.ext-checkuser-investigate-table-cell-pinned, .ext-checkuser-investigate-table.mw-datatable.ext-checkuser-investigate-table-pinned .ext-checkuser-investigate-table-row-pinned-data-match td.ext-checkuser-investigate-table-cell-pinned, .ext-checkuser-investigate-table.mw-datatable.ext-checkuser-investigate-table-pinned .ext-checkuser-investigate-table-row-pinned td.ext-checkuser-investigate-table-cell-pinned-data-match, .ext-checkuser-investigate-table.mw-datatable.ext-checkuser-investigate-table-pinned .ext-checkuser-investigate-table-row-pinned-data-match td.ext-checkuser-investigate-table-cell-pinned-data-match, .ext-checkuser-investigate-table.mw-datatable:not(.ext-checkuser-investigate-table-pinned) tr td.ext-checkuser-investigate-table-cell-hover-data-match, .ext-checkuser-investigate-table.mw-datatable:not(.ext-checkuser-investigate-table-pinned) tr td:hover.ext-checkuser-investigate-table-cell-pinnable { background-color: color-mix(in srgb, var(--wiki-warning-color) 40%, transparent); } .ext-checkuser-investigate-copy-message.oo-ui-messageWidget.oo-ui-messageWidget-block.oo-ui-flaggedElement-notice { background-color: var(--wiki-content-background-color--secondary); border-color: var(--wiki-content-border-color); } .mw-special-Investigate .ext-checkuser-investigate-subtitle-fieldset { background-color: var(--wiki-content-background-color--secondary); } /**************** * End checkuser * *****************/ /*************************** * Theme-based SearchDigest * ****************************/ .searchdigest-stats-table { border-color: var(--wiki-content-border-color); border-collapse: collapse; } .searchdigest-stats-table thead th, .searchdigest-stats-table tr:not(:last-child) th, .searchdigest-stats-table tr:not(:last-child) td { border-bottom-color: var(--wiki-content-border-color); } .searchdigest-stats-table thead th:last-child, .searchdigest-stats-table td { border-left-color: var(--wiki-content-border-color); } .searchdigest-stats-table thead tr { background: var(--wiki-content-background-color--secondary); } /******************* * End SearchDigest * ********************/ /**************************** * Extension:RelatedArticles * *****************************/ .client-js .read-more-container { min-height: unset; } @media (min-width: 1000px) { .client-js .read-more-container { min-height: calc( 80px/*card height*/ + 10px/*card margin*/ + 1em/*container padding*/ + 0.3em/*card-list margin*/ + 0.8em/*h2 font-size*/ + 1em/*h2 padding*/ + 0.6em/*h2 margin*/ + 1px /*container border*/ ); } } .ext-related-articles-card-list .ext-related-articles-card { background-color: var(--wiki-content-background-color); } .ext-related-articles-card-list .ext-related-articles-card, .ext-related-articles-card-list .ext-related-articles-card + .ext-related-articles-card { /* your guess is as good as mine for why they did this */ border-color: color-mix(in srgb, var(--wiki-content-border-color) 20%, transparent); } .ext-related-articles-card-list .ext-related-articles-card-thumb { background-color: var(--wiki-content-background-color--secondary); } .ra-read-more h2 { color: var(--wiki-body-dynamic-color--secondary); } .ext-related-articles-card-list h3 a { color: var(--wiki-content-heading-color); } .ext-related-articles-card-list h3::after { background-image: linear-gradient(to right, transparent, var(--wiki-content-background-color) 50%); } .ext-related-articles-card-list .ext-related-articles-card-extract { color: color-mix(in srgb, var(--wiki-content-text-color) 50%, transparent); } /* removed background image and use a mask image instead */ .ext-related-articles-card-list .ext-related-articles-card-thumb-placeholder { position: relative; background-image: none; } .ext-related-articles-card-list .ext-related-articles-card-thumb-placeholder::after { position: absolute; width: 100%; height: 100%; top: 0; left: 0; content: ''; --mask-image: url("/extensions/RelatedArticles/resources/ext.relatedArticles.readMore/article.svg?3c572"); --mask-size: 40px; --mask-repeat: no-repeat; --mask-position: center; -webkit-mask: var(--mask-image); mask: var(--mask-image); -webkit-mask-size: var(--mask-size); mask-size: var(--mask-size); -webkit-mask-repeat: var(--mask-repeat); mask-repeat: var(--mask-repeat); -webkit-mask-position: var(--mask-position); mask-position: var(--mask-position); background-color: color-mix(in srgb, var(--wiki-content-text-color) 75%, transparent); } /**/ /* this simulates mw-footer having a top border */ .read-more-container { border-bottom: var(--wiki-content-border-width, 1px) solid var(--wiki-content-border-color); } @media screen and (min-width: 720px) { .read-more-container { margin-right: 1em; } } /******************************** * End Extension:RelatedArticles * *********************************/ /******************* * Extension:Popups * ********************/ .mwe-popups { box-shadow: 0 30px 90px -20px rgba(0, 0, 0, 0.3), 0 0 1px 1px color-mix(in srgb, var(--wiki-content-border-color) 5%, transparent); } .mwe-popups, .mwe-popups .mwe-popups-container { background-color: var(--wiki-content-background-color); color: var(--wiki-content-text-color); } .mwe-popups .mwe-popups-extract { color: var(--wiki-content-text-color); } .mwe-popups .mwe-popups-extract[dir="ltr"]::after { background-image: linear-gradient(to right, transparent, var(--wiki-content-background-color) 50%); } .mwe-popups.flipped-y::before, .mwe-popups.flipped-x-y::before, .mwe-popups.mwe-popups-image-pointer::before, .mwe-popups.mwe-popups-image-pointer.flipped-x::before, .mwe-popups.mwe-popups-no-image-pointer::before, .mwe-popups.flipped-x.mwe-popups-is-tall::before, .mwe-popups.flipped-x-y.mwe-popups-is-tall::before { border-color: var(--wiki-content-border-color); } .mwe-popups.flipped-y::after, .mwe-popups.flipped-x-y::after, .mwe-popups.mwe-popups-image-pointer::after, .mwe-popups.mwe-popups-image-pointer.flipped-x::after, .mwe-popups.mwe-popups-no-image-pointer::after, .mwe-popups.flipped-x-y.mwe-popups-is-tall::after { border-color: var(--wiki-content-background-color); } .popups-icon { position: relative; background-position: center; background-repeat: no-repeat; background-size: calc(max(1.4285714em, 20px)); min-width: 20px; min-height: 20px; width: 1.4285714em; height: 1.4285714em; display: inline-block; vertical-align: text-bottom; } .popups-icon--preview-generic, .popups-icon--settings, .popups-icon--infoFilled, .popups-icon--infoFilled:lang(ar), .popups-icon--close, .popups-icon--reference-generic, .popups-icon--reference-book, .popups-icon--preview-disambiguation { background-image: none; } .popups-icon::after { position: absolute; width: 100%; height: 100%; top: 0; left: 0; content: ''; -webkit-mask-image: var(--mask-image, none); mask-image: var(--mask-image, none); -webkit-mask-repeat: var(--mask-repeat, no-repeat); mask-repeat: var(--mask-repeat, no-repeat); -webkit-mask-size: var(--mask-size, calc(max(1.4285714em, 20px))); mask-size: var(--mask-size, calc(max(1.4285714em, 20px))); -webkit-mask-position: var(--mask-position, center); mask-position: var(--mask-position, center); background-color: var(--mask-color, currentColor); } .popups-icon--preview-generic::after { --mask-image: url("data:image/svg+xml,%3Csvg xmlns=%22http://www.w3.org/2000/svg%22 width=%2220%22 height=%2220%22 viewBox=%220 0 20 20%22%3E %3Ctitle%3E sad face %3C/title%3E %3Cpath d=%22M2 0a2 2 0 0 0-2 2v18l4-4h14a2 2 0 0 0 2-2V2a2 2 0 0 0-2-2H2zm4 4c1.336 0 2.007 1.617 1.06 2.56-.943.947-2.56.276-2.56-1.06A1.5 1.5 0 0 1 6 4zm8 0c1.336 0 2.007 1.617 1.06 2.56-.943.947-2.56.276-2.56-1.06A1.5 1.5 0 0 1 14 4zm-4 5c2.61 0 4.83.67 5.65 3H4.35C5.17 9.67 7.39 9 10 9z%22/%3E %3C/svg%3E"); } .popups-icon--settings::after { --mask-image: url("data:image/svg+xml;utf8,<svg xmlns=\"http://www.w3.org/2000/svg\" xmlns:xlink=\"http://www.w3.org/1999/xlink\" width=\"20\" height=\"20\" viewBox=\"0 0 20 20\" fill=\"%23202122\"><g transform=\"translate(10 10)\"><path id=\"cdx-icon-settings-a\" d=\"M1.5-10h-3l-1 6.5h5m0 7h-5l1 6.5h3\"/><use xlink:href=\"%23cdx-icon-settings-a\" transform=\"rotate(45)\"/><use xlink:href=\"%23cdx-icon-settings-a\" transform=\"rotate(90)\"/><use xlink:href=\"%23cdx-icon-settings-a\" transform=\"rotate(135)\"/></g><path d=\"M10 2.5a7.5 7.5 0 000 15 7.5 7.5 0 000-15v4a3.5 3.5 0 010 7 3.5 3.5 0 010-7\"/></svg>"); } .popups-icon--infoFilled::after { --mask-image: url("data:image/svg+xml;utf8,<svg xmlns=\"http://www.w3.org/2000/svg\" xmlns:xlink=\"http://www.w3.org/1999/xlink\" width=\"20\" height=\"20\" viewBox=\"0 0 20 20\" fill=\"%23202122\"><path d=\"M10 0C4.477 0 0 4.477 0 10s4.477 10 10 10 10-4.477 10-10S15.523 0 10 0zM9 5h2v2H9zm0 4h2v6H9z\"/></svg>"); } .popups-icon--infoFilled:lang(ar)::after { --mask-image: url("data:image/svg+xml;utf8,<svg xmlns=\"http://www.w3.org/2000/svg\" xmlns:xlink=\"http://www.w3.org/1999/xlink\" width=\"20\" height=\"20\" viewBox=\"0 0 20 20\" fill=\"%23202122\"><path d=\"M8 19a1 1 0 001 1h2a1 1 0 001-1v-1H8zm9-12a7 7 0 10-12 4.9S7 14 7 15v1a1 1 0 001 1h4a1 1 0 001-1v-1c0-1 2-3.1 2-3.1A7 7 0 0017 7z\"/></svg>"); } .popups-icon--close::after { --mask-image: url("data:image/svg+xml;utf8,<svg xmlns=\"http://www.w3.org/2000/svg\" xmlns:xlink=\"http://www.w3.org/1999/xlink\" width=\"20\" height=\"20\" viewBox=\"0 0 20 20\" fill=\"%23202122\"><path d=\"m4.34 2.93 12.73 12.73-1.41 1.41L2.93 4.35z\"/><path d=\"M17.07 4.34 4.34 17.07l-1.41-1.41L15.66 2.93z\"/></svg>"); } .popups-icon--reference-generic::after { --mask-image: url("data:image/svg+xml;utf8,<svg xmlns=\"http://www.w3.org/2000/svg\" xmlns:xlink=\"http://www.w3.org/1999/xlink\" width=\"20\" height=\"20\" viewBox=\"0 0 20 20\" fill=\"%23202122\"><path d=\"m15 10-2.78-2.78L9.44 10V1H5a2 2 0 00-2 2v14a2 2 0 002 2h10a2 2 0 002-2V3a2 2 0 00-2-2z\"/></svg>"); } .popups-icon--reference-book::after { --mask-image: url("data:image/svg+xml;utf8,<svg xmlns=\"http://www.w3.org/2000/svg\" xmlns:xlink=\"http://www.w3.org/1999/xlink\" width=\"20\" height=\"20\" viewBox=\"0 0 20 20\" fill=\"%23202122\"><path d=\"M15 2a7.65 7.65 0 00-5 2 7.65 7.65 0 00-5-2H1v15h4a7.65 7.65 0 015 2 7.65 7.65 0 015-2h4V2zm2.5 13.5H14a4.38 4.38 0 00-3 1V5s1-1.5 4-1.5h2.5z\"/><path d=\"M9 3.5h2v1H9z\"/></svg>"); } .popups-icon--reference-journal::after { --mask-image: url("data:image/svg+xml;utf8,<svg xmlns=\"http://www.w3.org/2000/svg\" xmlns:xlink=\"http://www.w3.org/1999/xlink\" width=\"20\" height=\"20\" viewBox=\"0 0 20 20\" fill=\"%23202122\"><path d=\"M2 18.5A1.5 1.5 0 003.5 20H5V0H3.5A1.5 1.5 0 002 1.5zM6 0v20h10a2 2 0 002-2V2a2 2 0 00-2-2zm7 8H8V7h5zm3-2H8V5h8z\"/></svg>"); } .popups-icon--reference-news::after { --mask-image: url("data:image/svg+xml;utf8,<svg xmlns=\"http://www.w3.org/2000/svg\" xmlns:xlink=\"http://www.w3.org/1999/xlink\" width=\"20\" height=\"20\" viewBox=\"0 0 20 20\" fill=\"%23202122\"><path d=\"M5 2a2 2 0 00-2 2v12a1 1 0 01-1-1V5h-.5A1.5 1.5 0 000 6.5v10A1.5 1.5 0 001.5 18H18a2 2 0 002-2V4a2 2 0 00-2-2zm1 2h11v4H6zm0 6h6v1H6zm0 2h6v1H6zm0 2h6v1H6zm7-4h4v5h-4z\"/></svg>"); } .popups-icon--reference-web::after { --mask-image: url("data:image/svg+xml;utf8,<svg xmlns=\"http://www.w3.org/2000/svg\" xmlns:xlink=\"http://www.w3.org/1999/xlink\" width=\"20\" height=\"20\" viewBox=\"0 0 20 20\" fill=\"%23202122\"><path d=\"M2 2a2 2 0 00-2 2v12a2 2 0 002 2h16a2 2 0 002-2V4a2 2 0 00-2-2zm2 1.5A1.5 1.5 0 112.5 5 1.5 1.5 0 014 3.5zM18 16H2V8h16z\"/></svg>"); } .popups-icon--preview-disambiguation::after { --mask-image: url("data:image/svg+xml;utf8,<svg xmlns=\"http://www.w3.org/2000/svg\" xmlns:xlink=\"http://www.w3.org/1999/xlink\" width=\"20\" height=\"20\" viewBox=\"0 0 20 20\" fill=\"%23202122\"><path d=\"M7 0a2 2 0 00-2 2h9a2 2 0 012 2v12a2 2 0 002-2V2a2 2 0 00-2-2z\"/><path d=\"M13 20a2 2 0 002-2V5a2 2 0 00-2-2H4a2 2 0 00-2 2v13a2 2 0 002 2zM9 5h4v5H9zM4 5h4v1H4zm0 2h4v1H4zm0 2h4v1H4zm0 2h9v1H4zm0 2h9v1H4zm0 2h9v1H4z\"/></svg>"); } /*********************** * End Extension:Popups * ************************/ /************************* * Extension:CiteThisPage * **************************/ .mw-specialCiteThisPage-bibliographic { background-color:var(--wiki-content-background-color--secondary); } /***************************** * End Extension:CiteThisPage * ******************************/ /************************* * Extension:ImageMap * **************************/ .noresize img { /* Why does the ImageMap container have no special class name? */ display: block; /* fix the scrollbar issue */ } /***************************** * End Extension:ImageMap * ******************************/ /********************** * Extension:Page Forms * ***********************/ .fieldBox, .templateForm { background-color:var(--wiki-content-background-color--secondary); border-color:var(--wiki-content-border-color); } .fieldBox .hierarchy_structure textarea { /* this !important is needed to override an inline color rule */ color:var(--wiki-content-text-color) !important; } /*************************** * End Extension:Page Forms * ****************************/ /********************* * Mobile adjustments * **********************/ /* Responsive Special:UserRights */ #mw-userrights-table-outer input#wpReason { width: 100%; max-width: 33.5em; } @media screen and (max-width: 720px) { html:root { /* make it won't be override by user's common.css */ --wiki-is-top-logo: 1; --wiki-left-spacing: 0px; --wiki-right-spacing: 0px; --wiki-navigation-left-spacing: 3px; --wiki-navigation-right-spacing: var(--wiki-navigation-left-spacing, 0px); --wiki-content-border-radius: 0px; --wiki-content-border-top-radius: 0px; --wiki-footer-border-radius: 0px; --wiki-content-padding: 0.5rem; --wiki-navigation-menu-margin: 0.5rem; /* margin around toggle button and search box */ --wiki-navigation-height: calc(2rem + var(--wiki-is-navigation-inside-content, 0)*0.5em); --wiki-navigation-bottom-padding: 0px; --wiki-navigation-tab-height: 2rem; --wiki-navigation-search-height: calc(2rem + 4px); --wiki-logo-height: 80px; --wiki-logo-margin: 10px; --wiki-navigation-tab-full-height: calc(var(--wiki-navigation-tab-height) + max(var(--wiki-navigation-selected-border-width), var(--wiki-navigation-border-width)) + var(--wiki-content-border-width, 1px)); --wiki-head-icon-padding: 0.25rem; --wiki-head-icon-size: calc(var(--wiki-navigation-tab-height) - var(--wiki-head-icon-padding) * 2); --wiki-head-toggle-button-size: var(--wiki-navigation-search-height); --wiki-sidebar-portal-spacing: 0px; --wiki-top-spacing: var(--wiki-logo-margin); --wiki-logo-box-width: calc(min( var(--wiki-logo-file-width, 160) / var(--wiki-logo-file-height, 160) * var(--wiki-logo-height), calc(100vw - var(--wiki-navigation-menu-margin)*2 - 18px))); } #mw-head-base { width: auto; margin-left: auto; margin-right: auto; } #p-logo { max-width: 100vw; top: calc(var(--wikigg-header-height) + var(--wiki-top-spacing, var(--wiki-logo-margin, 15px))); left: calc(max(0px, (100% - var(--wiki-logo-file-width) / var(--wiki-logo-file-height) * var(--wiki-logo-box-height)) / 2)); } #mw-head { position: absolute; left: 0; width: 100%; margin: unset; top: calc(var(--wikigg-header-height) + var(--wiki-top-spacing, var(--wiki-logo-margin)) + var(--wiki-logo-box-height) + var(--wiki-logo-margin)); border-radius: 0; } #left-navigation::before { /* for left spacing */ border-bottom-width: var(--navigation-border-bottom-width); } #right-navigation::after { display: block; /* for right spacing */ } #p-cactions, #p-variants { margin-right: 0px; } #p-cactions::after, #p-variants::after { width: 0; } #p-search { position: absolute; left: var(--wiki-navigation-menu-margin); right: var(--wiki-navigation-menu-margin); top: calc(var(--wiki-navigation-height, 3em) + var(--navigation-border-bottom-width)); margin: 0; padding: 0; } #mw-head::before, #mw-head::after, #p-search::before, #p-search::after { display: none; } #simpleSearch { width: auto; max-width: unset; /* override vector default of 20em */ } .vector-search-box-input { height: var(--wiki-navigation-search-height); } .vector-search-box form { margin: var(--wiki-navigation-menu-margin) 0px; } #mw-head, .mw-body, .parsoid-body, .mw-body::after, .parsoid-body::after, .mw-footer { border-left-width: 0; border-right-width: 0; border-radius: 0; } .mw-body, .parsoid-body { margin-top: 0; padding-top: calc(var(--navigation-border-bottom-width) + var(--wiki-content-padding) + var(--wiki-navigation-search-height) + var(--wiki-navigation-bottom-padding) + (var(--wiki-navigation-menu-margin) * 2)); } .mw-body::after, .parsoid-body::after { left: 0; right: 0; } #mw-data-after-content { margin-left: 0; } #mw-panel { position: unset; width: 100%; margin: 0px auto; top: 0; float: unset; } /* border-radius fix */ #mw-panel #p-ext-discordwidget + .vector-menu-portal { border-radius: calc(min(var(--wiki-sidebar-border-radius), var(--wiki-sidebar-portal-spacing) * 999)); } .vector-menu-dropdown .vector-menu-content { right: 0; left: unset; } #mw-panel .vector-menu-portal { box-sizing: border-box; border-left-width: 0; border-right-width: 0; background-color: var(--wiki-sidebar-background-color); } .vector-menu-portal .vector-menu-content { margin-top: 0; margin-bottom: 0; display: block !important; /* show all menus on mobile even if they are collapsed by collapsibleSidebarSections gadget */ } table.wikitable, table.responsive-table { display: block; overflow-x: auto; border: 0; } .mw-installed-software { word-break: unset; } .gallerybox, .gallerybox > div, .gallerybox .thumb { max-width: 100%; } /* disable float on RecentChanges legend */ .mw-changeslist-legend { float: none; margin: 0 auto; } /* advanced search options */ #mw-searchoptions table { float: none; } #mw-searchoptions table td { display: block; } /* popup when clicking the download button in multimediaviewer */ .mw-mmv-dialog { width: unset; } /* turn math elements into scroll blocks unless they're an immediate child of a span */ :not(span) > math.mwe-math-element { overflow: auto hidden; max-width: 100%; } /* Expandable mobile navigation panel */ body.has-vector-mobile-menu #mw-panel { position: absolute; --panel-offset: calc(var(--wiki-head-toggle-button-size) + var(--wiki-sidebar-offset, 0px)); top: calc(var(--wikigg-header-height) + var(--wiki-top-spacing, var(--wiki-logo-margin, 15px)) + var(--wiki-logo-box-height) + var(--wiki-logo-margin, 15px) + var(--wiki-content-border-width, 1px) * var(--wiki-is-navigation-inside-content, 0px) + var(--wiki-navigation-height, 3em) + var(--navigation-border-bottom-width) + var(--wiki-navigation-menu-margin) + var(--panel-offset)); left: var(--wiki-navigation-menu-margin); right: var(--wiki-navigation-menu-margin); width: auto; z-index: 3; } body.has-vector-mobile-menu #mw-panel:not(.nav--expanded){ padding: 0; border: 0; border-image: none; } body.has-vector-mobile-menu #mw-panel .mobile-nav-toggle { position: absolute; cursor: pointer; z-index: 5; display: flex; justify-content: center; align-items: center; width: var(--wiki-head-toggle-button-size); height: var(--wiki-head-toggle-button-size); box-sizing: border-box; appearance: none; padding: 0; border: 1px solid var(--wiki-content-border-color); background-color: var(--wiki-navigation-background-color); top: calc(-1 * var(--panel-offset)); } #mw-panel #p-ext-discordwidget { background-color: var(--wiki-sidebar-background-color); padding: 0.5rem 0.25rem 0.25rem 0.5rem; border: var(--wiki-sidebar-border-width, 1px) var(--wiki-sidebar-border-style, solid) var(--wiki-sidebar-border-color); } body.has-vector-mobile-menu #mw-panel .vector-menu-portal { display: none; border-image: none; } body.has-vector-mobile-menu #mw-panel .mobile-nav-toggle.nav--expanded ~ .vector-menu-portal { display: block; } body.has-vector-mobile-menu #mw-navigation #mw-panel .vector-menu-portal { text-align: left; font-size: 110%; border-left-width: var(--wiki-sidebar-border-width, 1px); border-right-width: var(--wiki-sidebar-border-width, 1px); margin-inline: var(--wiki-sidebar-margin, 0.5em); } body.has-vector-mobile-menu #mw-navigation #mw-panel .vector-menu-portal + .vector-menu-portal { border-top-width: 0; } body.has-vector-mobile-menu #mw-navigation #mw-panel .vector-menu-portal:not(:last-child) { border-bottom-width: 0; } body.has-vector-mobile-menu #mw-panel .vector-menu-content-list { display: flex; flex-wrap: wrap; } body.has-vector-mobile-menu #mw-panel .vector-menu-content-list a { display: block; padding: 0.2rem 0.5rem; border: 1px solid transparent; } body.has-vector-mobile-menu #mw-panel .vector-menu-content-list a:hover { border-color: var(--wiki-content-link-color); } body.has-vector-mobile-menu #mw-panel #p-navigation-label { display: block; } body.has-vector-mobile-menu #p-logo { /* Logo's a part of the sidebar panel, which uses relative positioning for the expandable button. Offset the logo appropriately. */ top: calc(-1 * (var(--wiki-logo-box-height) + var(--wiki-logo-margin, 15px) + var(--wiki-content-border-width, 1px) * var(--wiki-is-navigation-inside-content, 0) + var(--wiki-navigation-height, 3em) + var(--navigation-border-bottom-width) + var(--wiki-navigation-menu-margin) + var(--panel-offset))); } .mobile-nav-toggle { --icon: url("data:image/svg+xml,%3C%3Fxml version='1.0' encoding='UTF-8'%3F%3E%3Csvg xmlns='http://www.w3.org/2000/svg' width='20' height='20' viewBox='0 0 20 20'%3E%3Cpath d='M1 3v2h18V3zm0 8h18V9H1zm0 6h18v-2H1z'/%3E%3C/svg%3E%0A"); } body.has-vector-mobile-menu #p-tb .mw-list-item > a { display: inline-flex; } body.has-vector-mobile-menu .vector-menu-content-list { flex-direction: row; } /* Search adjustments for the expandable menu */ body.has-vector-mobile-menu #p-search { /* reposition to the right when mobile sidebar menu is active */ left: calc(var(--wiki-navigation-menu-margin) * 2 + var(--wiki-head-toggle-button-size)); right: var(--wiki-navigation-menu-margin); transform: none; } body.has-vector-mobile-menu #simpleSearch { width: 100%; margin: 0 auto; } /* icon navbar tabs + expandable nav panel icon */ #mw-head { --icon: url("data:image/svg+xml,%3C%3Fxml version='1.0' %3F%3E%3Csvg fill='none' height='24' stroke='%23000' stroke-linecap='round' stroke-linejoin='round' stroke-width='2' viewBox='0 0 24 24' width='24' xmlns='http://www.w3.org/2000/svg'%3E%3Cpath d='M0 0h24v24H0z' fill='none' stroke='none'/%3E%3Cpath d='M4 4l4 16l4 -14l4 14l4 -16'/%3E%3C/svg%3E"); } #mw-head .vector-menu-tabs .mw-list-item a, #mw-head .vector-menu-dropdown .vector-menu-heading, #mw-panel .mobile-nav-toggle { line-height: var(--wiki-head-icon-size); width: var(--wiki-head-icon-size); /* same as line height */ height: var(--wiki-head-icon-size); box-sizing: content-box; padding: var(--wiki-head-icon-padding); color: transparent; /**<< for watch/unwatch, the text of <a> will be plain 'watch'/'unwatch' without <span> after clicking. **/ } #mw-head .vector-menu-tabs .mw-list-item a::before, #mw-head .vector-menu-dropdown .vector-menu-heading::before, #mw-panel .mobile-nav-toggle::before { content: ""; display: block; position: unset; background-image: none; width: var(--wiki-head-icon-size); height: var(--wiki-head-icon-size); margin: 0; --mask: var(--icon) no-repeat; -webkit-mask: var(--mask); mask: var(--mask); -webkit-mask-size: 100% 100%; mask-size: 100% 100%; -webkit-mask-position: center center; mask-position: center center; background-color: var(--wiki-navigation-text-color); } #mw-head .vector-menu-tabs .mw-list-item a:hover::before, #mw-head .vector-menu-dropdown:hover .vector-menu-heading::before, #mw-panel .mobile-nav-toggle:hover::before, #mw-panel .mobile-nav-toggle.nav--expanded::before { background-color: var(--wiki-navigation-text-color--hover, var(--wiki-content-link-color--hover)); /* fallback for backwards compatibility */ } #mw-head .vector-menu-tabs .mw-list-item.selected a::before { background-color: var(--wiki-navigation-selected-text-color); } #mw-head .vector-menu-tabs .mw-list-item a span, #mw-head .vector-menu-dropdown .vector-menu-heading span { display: none; } #mw-head .vector-menu-dropdown .vector-menu-heading::after { display: none; } #ca-ve-edit, #ca-edit { --icon: url("data:image/svg+xml,%3C%3Fxml version='1.0' encoding='UTF-8'%3F%3E%3Csvg xmlns='http://www.w3.org/2000/svg' width='20' height='20' viewBox='0 0 20 20'%3E%3Cpath d='m16.77 8 1.94-2a1 1 0 0 0 0-1.41l-3.34-3.3a1 1 0 0 0-1.41 0L12 3.23zM1 14.25V19h4.75l9.96-9.96-4.75-4.75z'/%3E%3C/svg%3E%0A"); } #ca-ve-edit + #ca-edit { --icon: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' xmlns:xlink='http://www.w3.org/1999/xlink' width='20' height='20' viewBox='0 0 20 20' aria-hidden='true'%3E%3C!----%3E%3Cg%3E%3Cpath d='M1 3v14h3v-2H3V5h1V3zm4 0v14h4v-2H7V5h2V3zm11 0v2h1v10h-1v2h3V3zm-5 0v2h2v10h-2v2h4V3z'%3E%3C/path%3E%3C/g%3E%3C/svg%3E"); } #ca-view, #ca-view-foreign { --icon: url("data:image/svg+xml,%3C%3Fxml version='1.0' encoding='UTF-8'%3F%3E%3Csvg xmlns='http://www.w3.org/2000/svg' width='20' height='20' viewBox='0 0 20 20'%3E%3Cpath d='M10 14.5a4.5 4.5 0 1 1 4.5-4.5 4.5 4.5 0 0 1-4.5 4.5M10 3C3 3 0 10 0 10s3 7 10 7 10-7 10-7-3-7-10-7'/%3E%3Ccircle cx='10' cy='10' r='2.5'/%3E%3C/svg%3E"); } #left-navigation li[id^=ca-nstab-] { --icon: url("data:image/svg+xml,%3C%3Fxml version='1.0' encoding='UTF-8'%3F%3E%3Csvg xmlns='http://www.w3.org/2000/svg' width='20' height='20' viewBox='0 0 20 20'%3E%3Ctitle%3E article %3C/title%3E%3Cpath d='M5 1a2 2 0 0 0-2 2v14a2 2 0 0 0 2 2h10a2 2 0 0 0 2-2V3a2 2 0 0 0-2-2zm0 3h5v1H5zm0 2h5v1H5zm0 2h5v1H5zm10 7H5v-1h10zm0-2H5v-1h10zm0-2H5v-1h10zm0-2h-4V4h4z'/%3E%3C/svg%3E%0A"); } #ca-history { --icon: url("data:image/svg+xml,%3C%3Fxml version='1.0' encoding='UTF-8'%3F%3E%3Csvg xmlns='http://www.w3.org/2000/svg' width='20' height='20' viewBox='0 0 20 20'%3E%3Cpath d='M9 6v5h.06l2.48 2.47 1.41-1.41L11 10.11V6z'/%3E%3Cpath d='M10 1a9 9 0 0 0-7.85 13.35L.5 16H6v-5.5l-2.38 2.38A7 7 0 1 1 10 17v2a9 9 0 0 0 0-18'/%3E%3C/svg%3E%0A"); } #ca-talk { --icon: url("data:image/svg+xml,%3C%3Fxml version='1.0' %3F%3E%3Csvg id='Outlined' viewBox='0 0 32 32' xmlns='http://www.w3.org/2000/svg'%3E%3Ctitle/%3E%3Cg id='Fill'%3E%3Cpath d='M26,12H24V6a3,3,0,0,0-3-3H6A3,3,0,0,0,3,6V24.41l5.12-5.12A1.05,1.05,0,0,1,8.83,19H12v3a3,3,0,0,0,3,3h8.17a1.05,1.05,0,0,1,.71.29L29,30.41V15A3,3,0,0,0,26,12ZM12,15v2H8.83a3,3,0,0,0-2.12.88L5,19.59V6A1,1,0,0,1,6,5H21a1,1,0,0,1,1,1v6H15A3,3,0,0,0,12,15ZM27,25.59l-1.71-1.71A3,3,0,0,0,23.17,23H15a1,1,0,0,1-1-1V15a1,1,0,0,1,1-1H26a1,1,0,0,1,1,1Z'/%3E%3C/g%3E%3C/svg%3E"); } #t-contributions { --icon: url("data:image/svg+xml,%3C%3Fxml version='1.0' %3F%3E%3Csvg enable-background='new 0 0 32 32' id='Stock_cut' version='1.1' viewBox='0 0 32 32' xml:space='preserve' xmlns='http://www.w3.org/2000/svg' xmlns:xlink='http://www.w3.org/1999/xlink'%3E%3Cdesc/%3E%3Cpath d='M27,12V5h-7v0 c0-2.209-1.791-4-4-4h0c-2.209,0-4,1.791-4,4v0H1v7h0c2.209,0,4,1.791,4,4v0c0,2.209-1.791,4-4,4h0v11h11v0c0-2.209,1.791-4,4-4h0 c2.209,0,4,1.791,4,4v0h7V20h0c2.209,0,4-1.791,4-4v0C31,13.791,29.209,12,27,12L27,12z' fill='none' stroke='%23000000' stroke-linejoin='round' stroke-miterlimit='10' stroke-width='2'/%3E%3C/svg%3E"); } #ca-addsection { --icon: url("data:image/svg+xml,%3C%3Fxml version='1.0' %3F%3E%3Csvg id='Outlined' viewBox='0 0 32 32' xmlns='http://www.w3.org/2000/svg'%3E%3Ctitle/%3E%3Cg id='Fill'%3E%3Cpolygon points='29 15 17 15 17 3 15 3 15 15 3 15 3 17 15 17 15 28 17 28 17 17 29 17 29 15'/%3E%3C/g%3E%3C/svg%3E"); } #ca-viewsource { --icon: url("data:image/svg+xml,%3C%3Fxml version='1.0' %3F%3E%3Csvg height='24' viewBox='0 0 24 24' width='24' xmlns='http://www.w3.org/2000/svg'%3E%3Cpath class='heroicon-ui' d='M20.59 12l-3.3-3.3a1 1 0 1 1 1.42-1.4l4 4a1 1 0 0 1 0 1.4l-4 4a1 1 0 0 1-1.42-1.4l3.3-3.3zM3.4 12l3.3 3.3a1 1 0 0 1-1.42 1.4l-4-4a1 1 0 0 1 0-1.4l4-4a1 1 0 0 1 1.42 1.4L3.4 12zm7.56 8.24a1 1 0 0 1-1.94-.48l4-16a1 1 0 1 1 1.94.48l-4 16z'/%3E%3C/svg%3E"); } #p-variants { --icon: url("data:image/svg+xml,%3C%3Fxml version='1.0' %3F%3E%3Csvg id='Outlined' viewBox='0 0 32 32' xmlns='http://www.w3.org/2000/svg'%3E%3Ctitle/%3E%3Cg id='Fill'%3E%3Cpath d='M16,2A14,14,0,1,0,30,16,14,14,0,0,0,16,2Zm8,13a24.28,24.28,0,0,0-.41-3.62c2.19.91,3.75,2.19,4.25,3.62Zm-2,0H17V10a20.9,20.9,0,0,1,4.34.63A20.26,20.26,0,0,1,22,15ZM17,8V4.19c1.43.5,2.71,2.06,3.62,4.25A24.28,24.28,0,0,0,17,8ZM15,4.19V8a24.28,24.28,0,0,0-3.62.41C12.29,6.25,13.57,4.69,15,4.19ZM15,10v5H10a20.26,20.26,0,0,1,.63-4.34A20.9,20.9,0,0,1,15,10ZM8,15H4.19c.5-1.43,2.06-2.71,4.25-3.62A24.28,24.28,0,0,0,8,15Zm0,2a24.28,24.28,0,0,0,.41,3.62C6.25,19.71,4.69,18.43,4.19,17Zm2,0h5v5a20.9,20.9,0,0,1-4.34-.63A20.26,20.26,0,0,1,10,17Zm5,7v3.84c-1.43-.5-2.71-2.06-3.62-4.25A24.28,24.28,0,0,0,15,24Zm2,3.84V24a24.28,24.28,0,0,0,3.62-.41C19.71,25.75,18.43,27.31,17,27.81ZM17,22V17h5a20.26,20.26,0,0,1-.63,4.34A20.9,20.9,0,0,1,17,22Zm7-5h3.84c-.5,1.43-2.06,2.71-4.25,3.62A24.28,24.28,0,0,0,24,17Zm2.87-6.12A15.11,15.11,0,0,0,23,9a15.11,15.11,0,0,0-1.85-3.87A12.12,12.12,0,0,1,26.84,10.88Zm-16-5.72A15.11,15.11,0,0,0,9,9a15.11,15.11,0,0,0-3.87,1.85A12.12,12.12,0,0,1,10.88,5.16Zm-5.72,16A15.11,15.11,0,0,0,9,23a15.11,15.11,0,0,0,1.85,3.87A12.12,12.12,0,0,1,5.16,21.12Zm16,5.72A15.11,15.11,0,0,0,23,23a15.11,15.11,0,0,0,3.87-1.85A12.12,12.12,0,0,1,21.12,26.84Z'/%3E%3C/g%3E%3C/svg%3E"); } #p-cactions { --icon: url("data:image/svg+xml,%3C%3Fxml version='1.0' encoding='UTF-8'%3F%3E%3Csvg xmlns='http://www.w3.org/2000/svg' width='20' height='20' viewBox='0 0 20 20'%3E%3Ccircle cx='10' cy='10' r='2'/%3E%3Ccircle cx='3' cy='10' r='2'/%3E%3Ccircle cx='17' cy='10' r='2'/%3E%3C/svg%3E%0A"); } #ca-watch { --icon: var(--icon-star-empty); } #ca-unwatch { --icon: var(--icon-star-filled); } .vector-menu-tabs #ca-watch.icon a:hover::before, .vector-menu-tabs #ca-unwatch.icon a:hover::before { background-image: none; } /* RecentChanges - prevent overflow on long summaries */ .client-js .mw-changeslist ul, .client-js .mw-changeslist table.mw-enhanced-rc { margin-left: 0; } .mw-changeslist-line-inner-comment, .mw-changeslist-line .comment { font-size: 0.9em; } .mw-userlink { overflow-wrap: anywhere; } } /* Hide the expandable navigation button for desktop users */ .mobile-nav-toggle { display: none; } /************* * End mobile * **************/ /******************************************************/ /* */ /* [END] OF WIKI.GG DEFAULT LOADOUT */ /* ALL LOCAL SKIN CUSTOMIZATIONS SHOULD GO BELOW HERE */ /* DO NOT EDIT OR DELETE THIS COMMENT BLOCK */ /* */ /******************************************************/ 90c0d4f26a4dacdcbb0d366a0cf2a8b2e8ee1710 MediaWiki:Common.css 8 239 263 2025-11-02T00:44:56Z ARTIFICER 564804 Importing default loadout css text/css /* CSS placed here will be applied to all skins */ /****************************************************************************************** ********************************* Start user-edit variables ******************************* ******************************************************************************************/ /***************************************** ****** START BASIC DESIGN VARIABLES ****** ----------------------------------------*/ :root { --wiki-content-heading-font-family: 'Linux Libertine', 'Georgia', 'Times', serif; --wiki-sidebar-heading-font-family: sans-serif; --wiki-content-border-radius: 0px; --wiki-sidebar-border-radius: 0px; } /*---------------------------------------- ******* END BASIC DESIGN VARIABLES ******* *****************************************/ /***************************************** ****** START BASIC COLOR VARIABLES ******* ----------------------------------------*/ :root, /* Begin light styles, delete from here to "end light styles" if you don't want your wiki to support any light themes (remove from [[Mediawiki:Theme-definitions]] too, or ask wiki.gg staff for help doing this) */ /* FYI: .view- will affect any theme marked |kind=light, */ /* individual themes are prefixed with .theme- instead */ .view-light { /********************** * Probably edit these * [ LIGHT VIEW ] ***********************/ --wiki-body-background-color: #F6F6F6; --wiki-body-background-image: url(filepath://Site-background.jpg); --wiki-content-background-color: #ffffff; --wiki-content-background-opacity: 100%; --wiki-content-border-color: #a7d7f9; --wiki-content-link-color: #0645ad; /* if changing this, remember to change --wiki-icon-to-link-filter as well!!! */ /* [ LIGHT VIEW ] */ --wiki-accent-color: #3366cc; --wiki-accent-label-color: #ffffff; --wiki-accent-link-color: #D5FB51; --wiki-icon-to-link-filter: invert(20%) sepia(93%) saturate(2141%) hue-rotate(210deg) brightness(83%) contrast(103%); /* put your --wiki-content-link-color into https://mrpie5.gitlab.io/css-filter-generator/ */ /**/ } /* end light styles */ /* Begin dark styles, delete from here to "end dark styles" if you don't want your wiki to support any dark themes (remove it from [[Mediawiki:Theme-definitions]] too, or ask wiki.gg staff for help doing this) */ /* FYI: .view- will affect any theme marked |kind=dark, */ /* individual themes are prefixed with .theme- instead */ .view-dark { /********************** * Probably edit these * [ DARK VIEW ] ***********************/ --wiki-body-background-color: #171717; --wiki-body-background-image: url(filepath://Site-background-dark.jpg); --wiki-content-background-color: #202020; --wiki-content-background-opacity: 90%; --wiki-content-border-color: #991A51; --wiki-content-link-color: #6d8afb; /* if changing this, remember to change --wiki-icon-to-link-filter as well!!! */ /* [ DARK VIEW ] */ --wiki-accent-color: #ff4d9d; --wiki-accent-label-color: #000; --wiki-accent-link-color: #1e1e43; --wiki-icon-to-link-filter: invert(60%) sepia(70%) saturate(3715%) hue-rotate(206deg) brightness(101%) contrast(97%); /* put your --wiki-content-link-color into https://mrpie5.gitlab.io/css-filter-generator/ */ /**/ } /* End dark styles */ /*---------------------------------------- ******* END BASIC COLOR VARIABLES ******** *****************************************/ /***************************************** **** START ADVANCED COLOR VARIABLES ****** ----------------------------------------*/ :root, .view-light { /******************* * Maybe edit these * [ LIGHT VIEW ] ********************/ --wiki-body-background-position: top center; --wiki-body-background-size: cover; --wiki-body-background-repeat: no-repeat; --wiki-body-background-attachment: fixed; --wiki-content-background-color--secondary: color-mix(in srgb, var(--wiki-content-background-color) 96%, var(--wiki-content-dynamic-color)); --wiki-content-text-color: #111111; --wiki-content-link-color--visited: var(--wiki-content-link-color); --wiki-content-link-color--hover: var(--wiki-content-link-color); --wiki-content-redlink-color: #ba0000; --wiki-content-heading-color: var(--wiki-content-text-color); --wiki-content-heading-border-color: var(--wiki-content-border-color); /* [ LIGHT VIEW ] */ --wiki-navigation-background-color: var(--wiki-content-background-color--secondary); --wiki-navigation-border-color: var(--wiki-navigation-selected-border-color); --wiki-navigation-text-color: var(--wiki-content-link-color); --wiki-navigation-selected-background-color: var(--wiki-content-background-color); --wiki-navigation-selected-border-color: var(--wiki-content-border-color); --wiki-navigation-selected-text-color: var(--wiki-content-text-color); /* [ LIGHT VIEW ] */ --wiki-neutral-color: var(--wiki-content-text-mix-color); --wiki-alert-color: #bf0017; --wiki-warning-color: #b05f30; --wiki-success-color: #0c742f; /**/ /*********************************** * Likely do not need to edit these * [ LIGHT VIEW ] ************************************/ --wiki-body-dynamic-color: #000000; --wiki-body-dynamic-color--inverted: #ffffff; --wiki-body-dynamic-color--secondary: #333333; --wiki-body-dynamic-color--secondary--inverted: #cccccc; --wiki-content-border-color--secondary: color-mix(in srgb, var(--wiki-content-border-color) 50%, transparent); --wiki-content-border-color--accent: color-mix(in srgb, var(--wiki-accent-color) 50%, transparent); --wiki-content-link-label-color: #ffffff; --wiki-content-dynamic-color: #000000; --wiki-content-dynamic-color--inverted: #ffffff; --wiki-content-dynamic-color--secondary: #333333; --wiki-content-dynamic-color--secondary--inverted: #cccccc; /* [ LIGHT VIEW ] */ --wiki-alert-label-color: #ffffff; --wiki-warning-label-color: #ffffff; --wiki-success-label-color: #ffffff; --wiki-icon-general-filter: ; /* do not set this to none, ignore the "unexpected token" error */ /**/ } .view-dark { /******************* * Maybe edit these * [ DARK VIEW ] ********************/ --wiki-body-background-position: top center; --wiki-body-background-size: cover; --wiki-body-background-repeat: no-repeat; --wiki-body-background-attachment: fixed; --wiki-content-background-color--secondary: color-mix(in srgb, var(--wiki-content-background-color) 96%, var(--wiki-content-dynamic-color)); --wiki-content-text-color: #ededed; --wiki-content-link-color--visited: var(--wiki-content-link-color); --wiki-content-link-color--hover: var(--wiki-content-link-color); --wiki-content-redlink-color: #FC5B4F; --wiki-content-heading-color: var(--wiki-content-text-color); --wiki-content-heading-border-color: var(--wiki-content-border-color); /* [ DARK VIEW ] */ --wiki-navigation-background-color: var(--wiki-content-background-color--secondary); --wiki-navigation-border-color: var(--wiki-navigation-selected-border-color); --wiki-navigation-text-color: var(--wiki-content-link-color); --wiki-navigation-selected-background-color: var(--wiki-content-background-color); --wiki-navigation-selected-border-color: var(--wiki-content-border-color); --wiki-navigation-selected-text-color: var(--wiki-content-text-color); /* [ DARK VIEW ] */ --wiki-neutral-color: var(--wiki-content-text-mix-color); --wiki-alert-color: #ff576a; --wiki-warning-color: #cf721c; --wiki-success-color: #13aa45; /**/ /*********************************** * Likely do not need to edit these * [ DARK VIEW ] ************************************/ --wiki-body-dynamic-color: #ffffff; --wiki-body-dynamic-color--inverted: #000000; --wiki-body-dynamic-color--secondary: #cccccc; --wiki-body-dynamic-color--secondary--inverted: #333333; --wiki-content-border-color--secondary: color-mix(in srgb, var(--wiki-content-border-color) 50%, transparent); --wiki-content-border-color--accent: color-mix(in srgb, var(--wiki-accent-color) 50%, transparent); --wiki-content-link-label-color: #000; --wiki-content-dynamic-color: #ffffff; --wiki-content-dynamic-color--inverted: #000000; --wiki-content-dynamic-color--secondary: #cccccc; --wiki-content-dynamic-color--secondary--inverted: #333333; /* [ DARK VIEW ] */ --wiki-alert-label-color: #000000; --wiki-warning-label-color: #000000; --wiki-success-label-color: #000000; --wiki-icon-general-filter: invert(100%); } /*---------------------------------------- ***** END ADVANCED COLOR VARIABLES ******* *****************************************/ /***************************************** **** START ADVANCED DESIGN VARIABLES ***** ----------------------------------------*/ :root { /*********************** start logo position ----------------------*/ --wiki-is-top-logo: 0; /* 1 = center logo at the top of the page; 0 = logo at the top left of the page */ --wiki-logo-file-width: 160; /* Width of the image file in px. Put a number without the letters `px`. */ --wiki-logo-file-height: 160; /* Height of the image file in px. Put a number without the letters `px`. */ --wiki-logo-height: calc(var(--wiki-logo-file-height)*1px); /* Valid only when --wiki-is-top-logo is 1. The height the logo should be shown */ --wiki-logo-margin: 15px; /* the width of margin below the logo. When --wiki-is-top-logo is 1, this is also the default value of --wiki-top-spacing */ /*----------------------- end logo position ***********************/ --wiki-is-navigation-inside-content: 0; /* 0 = default navigation tabs layout; 1 = navigation tabs inside content box */ --wiki-body-font-family: sans-serif; --wiki-content-firstheading-font-family: var(--wiki-content-heading-font-family); /* only apply to the main title of article */ /****** the following length variables must have units specified even if 0, ignore the warning *****/ --wiki-content-border-width: 1px; --wiki-sidebar-width: 10em; /* width of sidebar(#mw-panel) */ --wiki-sidebar-portal-spacing: 0px; --wiki-sidebar-border-width: var(--wiki-content-border-width); --wiki-navigation-border-radius: 0px; /* border radius of tabs */ /******************* * Maybe edit these * [ DESIGN ] ********************/ --wiki-logo-filter: none; /****** the following length variables must have units specified even if 0, ignore the warning *****/ --wiki-content-border-top-radius: var(--wiki-content-border-radius); --wiki-content-border-style: solid; --wiki-content-border-image: none; --wiki-content-backdrop-filter: none; --wiki-page-content-max-width: 9999px; /* max width of sidebar+gap+content, must be a length value. A huge value can be used to indicate no limit, e.g. 99999px */ --wiki-gap-between-sidebar-and-content: 1em; /* gap between sidebar(#mw-panel) and content(#content) */ --wiki-sidebar-font-size: 0.75em; /* please use em or rem for this */ --wiki-sidebar-line-height: 1.125; --wiki-sidebar-heading-font-size: 0.75em; /* please use em or rem for this */ --wiki-sidebar-margin: 0em; --wiki-sidebar-list-item-padding: 0.25em 0.25rem; --wiki-sidebar-list-padding: 0.25rem; --wiki-sidebar-list-item-background--hover: none; /* background of hover item */ --wiki-navigation-font-size: 0.8125em; /* please use em or rem for this */ --wiki-navigation-font-weight: normal; --wiki-navigation-selected-font-weight: var(--wiki-navigation-font-weight); --wiki-navigation-text-transform: none; --wiki-navigation-height: 2.75rem; /* height of navigation area,include spacing above tabs */ --wiki-navigation-left-spacing: calc( (1 - var(--wiki-is-navigation-inside-content))*var(--wiki-content-border-radius) + var(--wiki-is-navigation-inside-content) * 0.5rem ); --wiki-navigation-right-spacing: calc( var(--wiki-is-navigation-inside-content) * 0.5rem ); --wiki-navigation-box-background-color: var(--wiki-content-background-color); --wiki-navigation-box-background-opacity: calc(var(--wiki-content-background-opacity)*0.8*var(--wiki-is-navigation-inside-content)); --wiki-navigation-box-background: color-mix(in srgb, var(--wiki-navigation-box-background-color) var(--wiki-navigation-box-background-opacity), transparent); /* usually only needed when --wiki-is-navigation-inside-content is 1 */ --wiki-navigation-box-border-image: none; /* usually only needed when --wiki-is-navigation-inside-content is 1 */ --wiki-navigation-box-backdrop-filter: none; /* usually only needed when --wiki-is-navigation-inside-content is 1 */ --wiki-navigation-selected-backdrop-filter: var(--wiki-content-backdrop-filter); /* usually only needed when --wiki-is-navigation-inside-content is 0 */ --wiki-navigation-backdrop-filter: var(--wiki-navigation-selected-backdrop-filter); /* usually only needed when --wiki-is-navigation-inside-content is 0 */ /* nav tabs style. The vector gradient is default. * If you want to customize the style of tabs, it's easier to start with the following settings: * --wiki-navigation-background-image: none; * --wiki-navigation-selected-background-image: none; * --wiki-navigation-selected-border-width: calc( (1 - var(--wiki-is-navigation-inside-content))*var(--wiki-content-border-width) + var(--wiki-is-navigation-inside-content) * 1px ); * --wiki-navigation-selected-border-bottom-background: none; * --wiki-navigation-tab-spacing: 0.25em; * --wiki-navigation-tab-padding-top: 0.5em; * --wiki-navigation-tab-padding-bottom: 0.5em; */ --wiki-navigation-tab-spacing: -1px; /* width of the space between tabs, can be a negative number, in which case adjacent tabs will overlap */ --wiki-navigation-tab-padding-top: 1.25em; --wiki-navigation-tab-padding-x: 0.75em; --wiki-navigation-tab-padding-bottom: 4px; --wiki-navigation-selected-border-width: 0px; /* border width of selected tabs */ --wiki-navigation-border-width: var(--wiki-navigation-selected-border-width); /* border width of normal tabs */ --wiki-navigation-border-image: none; --wiki-navigation-selected-border-image: var(--wiki-navigation-border-image); --wiki-navigation-background-image: linear-gradient(to bottom,transparent 0,var(--wiki-content-border-color) 100%), linear-gradient(to bottom,transparent 0,var(--wiki-content-border-color) 100%), linear-gradient(to top,var(--wiki-navigation-background-color) 0,var(--wiki-navigation-selected-background-color) 100%); --wiki-navigation-background-repeat: no-repeat, no-repeat, repeat-x; --wiki-navigation-background-position: left bottom, right bottom, left bottom; --wiki-navigation-background-size: 1px 100%, 1px 100%, 100%; --wiki-navigation-selected-background-image: linear-gradient(to bottom,transparent 0,var(--wiki-content-border-color) 100%), linear-gradient(to bottom,transparent 0,var(--wiki-content-border-color) 100%); --wiki-navigation-selected-background-repeat: no-repeat, no-repeat; --wiki-navigation-selected-background-position: left bottom, right bottom; --wiki-navigation-selected-background-size: 1px 100%, 1px 100%; --wiki-navigation-selected-border-bottom-background: linear-gradient(to right, var(--wiki-content-border-color) 0, var(--wiki-content-border-color) 1px, transparent 1px), linear-gradient(to left, var(--wiki-content-border-color) 0, var(--wiki-content-border-color) 1px, transparent 1px); /* affects the dropdown menu under More */ --wiki-navigation-dropdown-text-color: var(--wiki-navigation-text-color); --wiki-navigation-dropdown-text-color--hover: var(--wiki-navigation-dropdown-text-color); --wiki-navigation-dropdown-font-size: var(--wiki-navigation-font-size); /* please use em or rem for this */ --wiki-navigation-dropdown-border-width: 1px; --wiki-navigation-dropdown-border-radius: var(--wiki-navigation-border-radius); --wiki-navigation-dropdown-padding: 0.25em; /* padding of the dropdown menu box */ --wiki-navigation-dropdown-item-padding: 0.625em; /* padding of each dropdown menu items */ --wiki-navigation-dropdown-item-background--hover: none; /* background of hover item */ --wiki-navigation-dropdown-border-image: none; --wiki-navigation-dropdown-backdrop-filter: none; --wiki-navigation-dropdown-box-shadow: none; /* box shadow */ /* styles of the footer */ --wiki-spacing-before-footer: 0px; --wiki-footer-border-image: none; /* padding on body element */ --wiki-top-spacing: calc(var(--wiki-is-top-logo)*var(--wiki-logo-margin) + (1 - var(--wiki-is-top-logo))*1em); /* extra spacing below wiki.gg netbar */ --wiki-left-spacing: 1em; --wiki-right-spacing: 1em; --wiki-bottom-spacing: 2em; /* pading on content-element */ --wiki-content-top-spacing:1.25em; --wiki-content-left-spacing:1.5em; --wiki-content-right-spacing:1.5em; --wiki-content-bottom-spacing:1.5em; /* end design variables */ } /*---------------------------------------- ***** END ADVANCED DESIGN VARIABLES ****** *****************************************/ /******************************* **** START SHARED VARIABLES **** **** tl;dr: don't edit this **** ********************************/ /* These variables are rarely touched, usually inherit other variables, and are shared on all themes. In 99% of cases none of these are ever edited, and you should only be doing so if you have a very clear vision, understand what you are doing, and *know* that what you are trying to do is not accomplished by changing another variable in the above sections. Since these are by default shared across all themes, if you support multiple themes you'll probably want to separate the variables you want to modify here into .view-x blocks like above. If you don't understand what that means or how to do that then you probably shouldn't be modifying this section. */ :root { --wiki-content-border-bottom-width: var(--wiki-content-border-width); --wiki-content-border-bottom-style: var(--wiki-content-border-style); --wiki-content-border-bottom-color: var(--wiki-content-border-color); --wiki-content-text-mix-color: color-mix(in srgb, var(--wiki-content-background-color), var(--wiki-content-text-color) 62%); --wiki-content-text-mix-color-95: color-mix(in srgb, var(--wiki-content-background-color) 95%, var(--wiki-content-text-color)); --wiki-content-text-color--hover: var(--wiki-content-text-color); /* heading */ --wiki-content-heading-border-bottom-width: 1px; --wiki-content-heading-border-style: solid; --wiki-content-heading-font-weight: normal; --wiki-content-heading-font-style: normal; --wiki-content-heading-text-transform: none; --wiki-content-heading-line-height: normal; --wiki-content-heading-text-shadow: none; /* first heading (h1) */ --wiki-content-firstheading-border-bottom-width: var(--wiki-content-heading-border-bottom-width); --wiki-content-firstheading-border-style: var(--wiki-content-heading-border-style); --wiki-content-firstheading-border-color: var(--wiki-content-heading-border-color); --wiki-content-firstheading-font-weight: var(--wiki-content-heading-font-weight); --wiki-content-firstheading-font-style: var(--wiki-content-heading-font-style); --wiki-content-firstheading-text-transform: var(--wiki-content-heading-text-transform); --wiki-content-firstheading-line-height: var(--wiki-content-heading-line-height); --wiki-content-firstheading-color: var(--wiki-content-heading-color); --wiki-content-firstheading-text-shadow: none; /* sub-heading (h3, h4, h5, h6) */ --wiki-content-subheading-border-bottom-width: 0px; --wiki-content-subheading-border-style: var(--wiki-content-heading-border-style); --wiki-content-subheading-border-color: var(--wiki-content-heading-border-color); --wiki-content-subheading-font-family: var(--wiki-body-font-family); --wiki-content-subheading-font-weight: bold; --wiki-content-subheading-font-style: normal; --wiki-content-subheading-text-transform: none; --wiki-content-subheading-line-height: var(--wiki-content-heading-line-height); --wiki-content-subheading-color: var(--wiki-content-heading-color); --wiki-content-subheading-text-shadow: none; /* heading size */ --wiki-content-firstheading-font-size: 1.8em; --wiki-content-heading-h2-font-size: 1.5em; --wiki-content-heading-h3-font-size: 1.2em; --wiki-content-heading-h4-font-size: 114%; --wiki-content-heading-h5-font-size: 108%; --wiki-content-heading-h6-font-size: 100%; --wiki-content-toc-background: var(--wiki-content-background-color--secondary); --wiki-content-toc-border-width: 1px; --wiki-content-toc-border-style: solid; --wiki-content-toc-border-color: var(--wiki-content-border-color); --wiki-content-toc-border-radius: 0px; --wiki-content-toc-border-image: none; --wiki-content-toc-box-shadow: 0 0.1em 0.2em #000000; --wiki-content-catlinks-background: var(--wiki-content-background-color--secondary); --wiki-content-catlinks-border-width: 1px; --wiki-content-catlinks-border-style: solid; --wiki-content-catlinks-border-color: var(--wiki-content-border-color); --wiki-content-catlinks-border-radius: 0px; --wiki-content-catlinks-border-image: none; --wiki-content-catlinks-box-shadow: none; --wiki-content-filetoc-background: var(--wiki-content-background-color--secondary); --wiki-content-filetoc-border-width: 1px; --wiki-content-filetoc-border-style: solid; --wiki-content-filetoc-border-color: var(--wiki-content-border-color); --wiki-content-filetoc-border-radius: 0px; --wiki-content-filetoc-border-image: none; --wiki-content-filetoc-box-shadow: none; --wiki-logo-offset-x: 0px; --wiki-logo-offset-y: 0px; --wiki-sidebar-padding: 0px; --wiki-sidebar-background-color: var(--wiki-content-background-color); --wiki-sidebar-background-opacity: var(--wiki-content-background-opacity); --wiki-sidebar-background-image: none; --wiki-sidebar-background-position: center; --wiki-sidebar-background-repeat: repeat; --wiki-sidebar-background-size: auto; --wiki-sidebar-box-shadow: none; --wiki-sidebar-filter: none; --wiki-sidebar-backdrop-filter: var(--wiki-content-backdrop-filter); --wiki-sidebar-border-color: var(--wiki-content-border-color); --wiki-sidebar-border-style: solid; --wiki-sidebar-border-image: none; --wiki-sidebar-link-color: var(--wiki-content-link-color); --wiki-sidebar-link-color--hover: var(--wiki-content-link-color--hover); --wiki-sidebar-heading-color: var(--wiki-content-heading-color); --wiki-sidebar-heading-font-weight: normal; --wiki-sidebar-heading-font-style: normal; --wiki-sidebar-heading-text-transform: none; --wiki-sidebar-heading-line-height: normal; --wiki-sidebar-heading-padding: 0.5rem 0.25rem 0.5rem 0.5rem; --wiki-sidebar-heading-margin: 0px 0px -0.5rem 0px; --wiki-sidebar-heading-background: none; --wiki-sidebar-heading-border-image: none; --wiki-sidebar-heading-text-shadow: none; --wiki-sidebar-list-background: none; --wiki-sidebar-list-border-image: none; --wiki-sidebar-list-margin: 0px; --wiki-sidebar-list-item-background: none; --wiki-sidebar-list-item-border-image: none; --wiki-sidebar-list-item-background--hover: none; --wiki-sidebar-list-item-border-image--hover: none; --wiki-sidebar-list-item-spacing: 0px; --wiki-sidebar-icon-to-link-filter: var(--wiki-icon-to-link-filter); --wiki-sidebar-offset: 0px; /* Vertical offset */ --wiki-sidebar-box-padding: 0px; --wiki-sidebar-box-background: none; --wiki-sidebar-box-border: 0px; --wiki-sidebar-box-border-radius: 0px; --wiki-sidebar-box-border-image: none; --wiki-accent-color--hover: color-mix(in srgb, var(--wiki-accent-color) 90%, var(--wiki-accent-label-color)); --wiki-footer-border-width: var(--wiki-content-border-width); --wiki-footer-border-style: var(--wiki-content-border-style); --wiki-footer-border-color: var(--wiki-content-border-color); --wiki-footer-background-color: var(--wiki-content-background-color); --wiki-footer-background-opacity: var(--wiki-content-background-opacity); --wiki-footer-backdrop-filter: var(--wiki-content-backdrop-filter); --wiki-footer-text-color: var(--wiki-content-text-color); --wiki-footer-link-color: var(--wiki-content-link-color); --wiki-footer-link-color--hover: var(--wiki-content-link-color--hover); --wiki-footer-border-radius: var(--wiki-content-border-radius); --wiki-navigation-background-opacity: var(--wiki-navigation-selected-background-opacity); --wiki-navigation-background-color--hover: var(--wiki-navigation-background-color); --wiki-navigation-background-opacity--hover: var(--wiki-navigation-background-opacity); --wiki-navigation-background-image--hover: var(--wiki-navigation-background-image); --wiki-navigation-background-position--hover: var(--wiki-navigation-background-position); --wiki-navigation-background-repeat--hover: var(--wiki-navigation-background-repeat); --wiki-navigation-background-size--hover: var(--wiki-navigation-background-size); --wiki-navigation-text-color--hover: var(--wiki-content-link-color--hover); --wiki-navigation-transform--hover: none; --wiki-navigation-selected-border-style: solid; --wiki-navigation-selected-background-opacity: var(--wiki-content-background-opacity); --wiki-navigation-border-style: solid; --wiki-navigation-border-color--hover: var(--wiki-navigation-border-color); --wiki-navigation-border-image--hover: var(--wiki-navigation-border-image); --wiki-navigation-border-bottom-color: var(--wiki-navigation-selected-border-color); --wiki-navigation-border-bottom-color--hover: var(--wiki-navigation-border-color--hover); /* change this color to transparent to make it behave like a selected tab */ --wiki-navigation-border-bottom-style: var(--wiki-navigation-selected-border-style); --wiki-navigation-border-bottom-width: calc(var(--wiki-is-navigation-inside-content, 0) * var(--wiki-navigation-selected-border-width, 1px) + (1 - var(--wiki-is-navigation-inside-content, 0)) * var(--wiki-content-border-width, 1px)); --wiki-navigation-icon-size: 1em; --wiki-navigation-tab-padding-x--icon: var(--wiki-navigation-tab-padding-x); --wiki-navigation-bottom-spacing: 0px; /* If you change this to greater than 0px, you should usually change the value of --wiki-navigation-selected-border-bottom-background to var(--wiki-navigation-border-bottom-color) */ --wiki-navigation-dropdown-background-color: var(--wiki-content-background-color); --wiki-navigation-dropdown-background-opacity: var(--wiki-content-background-opacity); --wiki-navigation-dropdown-border-color: var(--wiki-navigation-border-color); --wiki-navigation-dropdown-offset: 0px; /* vertical offset */ --wiki-navigation-search-background-color: var(--wiki-content-background-color--secondary); --wiki-navigation-search-background-image: none; --wiki-navigation-search-background-position: 0; --wiki-navigation-search-background-size: auto; --wiki-navigation-search-background-repeat: repeat; --wiki-navigation-search-backdrop-filter: none; --wiki-navigation-search-border-color: var(--wiki-navigation-border-color); --wiki-navigation-search-border-color--hover: var(--wiki-accent-color); --wiki-navigation-search-border-style: solid; --wiki-navigation-search-border-width: 1px; --wiki-navigation-search-border-radius: 2px; --wiki-navigation-search-border-image: none; --wiki-navigation-search-border-image--hover: var(--wiki-navigation-search-border-image); --wiki-navigation-search-box-shadow: none; --wiki-navigation-search-box-shadow--hover: var(--wiki-navigation-search-box-shadow); --wiki-navigation-search-text-color: var(--wiki-content-text-color); --wiki-navigation-search-font-size: var(--wiki-navigation-font-size); --wiki-navigation-search-height: 2em; --wiki-navigation-search-button-color: currentColor; --wiki-navigation-search-button-color--hover: var(--wiki-navigation-search-button-color); --wiki-navigation-search-button-color-opacity: 80%; --wiki-navigation-search-button-color-opacity--hover: 95%; --wiki-navigation-search-bottom-spacing: 3px; --wiki-navigation-search-highlight-background-color: color-mix(in srgb, var(--wiki-accent-color) 5%, transparent); --wiki-navigation-gap-between-left-and-right: calc(max(0px, var(--wiki-navigation-tab-spacing))); /* minimum width between #left-navigation and #right-navigation before tabs start to collapse */ } /*** mobile adjustments ***/ @media screen and (max-width: 720px) { body.has-vector-mobile-menu{ --wiki-sidebar-offset: 0px; /* Vertical offset */ --wiki-sidebar-margin: 0px; --wiki-sidebar-heading-background: none; --wiki-sidebar-heading-border-image: none; --wiki-sidebar-heading-margin: 0px 0px -0.5em 0px; --wiki-sidebar-list-margin: 0px; --wiki-sidebar-list-background: none; --wiki-sidebar-list-border-image: none; --wiki-sidebar-list-item-background: none; --wiki-sidebar-list-item-border-image: none; --wiki-sidebar-list-item-background--hover: none; --wiki-sidebar-list-item-border-image--hover: none; --wiki-sidebar-list-item-spacing: 0px; --wiki-sidebar-line-height: 1.125; --wiki-sidebar-background-opacity: 100%; --wiki-navigation-search-border-width: 1px; --wiki-logo-offset-x: 0px; --wiki-logo-offset-y: 0px; } } /***************************** **** END SHARED VARIABLES **** ******************************/ /****************************************************************************************** ********************************* End user-edit variables ********************************* ******************************************************************************************/ /****************************** * Fallback for older browsers * * DONT EDIT THIS * *******************************/ @supports not (color:color-mix(in srgb, #000, transparent)) { .view-dark, .view-light, :root { --wiki-content-text-mix-color: var(--wiki-content-text-color); --wiki-content-text-mix-color-95: var(--wiki-content-background-color); --wiki-content-background-color--secondary: var(--wiki-content-dynamic-color--secondary--inverted); --wiki-content-border-color--secondary: var(--wiki-content-border-color); --wiki-content-border-color--accent: var(--wiki-accent-color); --wiki-accent-color--hover: var(--wiki-accent-color); --wiki-navigation-search-highlight-background-color: transparent; } } /***************************** * End older browser fallback * ******************************/ /***************************** * PortableInfoboxes * ******************************/ :root { --pi-background: var(--wiki-content-background-color); --pi-secondary-background: var(--wiki-accent-color); --pi-secondary-background-label: var(--wiki-accent-label-color); --pi-border-color: color-mix(in srgb, var(--pi-secondary-background) 50%, transparent); } .portable-infobox .pi-title, .portable-infobox .pi-header { text-align: center; font-size: 1.5em; background: color-mix(in srgb, var(--pi-secondary-background) 75%, transparent); color: var(--pi-secondary-background-label); } .portable-infobox .pi-data, .portable-infobox .pi-group { background: var(--wiki-content-background-color--secondary); } .portable-infobox .pi-image { padding: 8px; } .pi-image-thumbnail { max-width: 100%; } .pi-caption { color: var(--wiki-content-text-mix-color); } .pi-section-navigation .pi-section-tab.pi-section-active, .pi-section-navigation .pi-section-tab.current, .pi-media-collection .pi-tab-link.current { background: var(--pi-secondary-background); color: var(--pi-secondary-background-label); } .pi-collapse > .pi-item:first-child { cursor: pointer; } /* overqualify these to overwrite normal content heading styles */ .mw-body .portable-infobox h2, .mw-body .portable-infobox h3 { border-bottom: 0; font-family: inherit; font-weight: 700; margin: 0; } /***************************** * End PortableInfoboxes * ******************************/ /******************* * Main page layout * ********************/ #mp-container { display: grid; gap: 10px; clear:both; /* for .mw-indicators combined with NOTITLE */ } @media screen and (max-width: 990px) { /* for mobile screens */ #mp-container { grid-template-areas:var(--main-page-layout--mobile); grid-template-columns:var(--main-page-layout-columns--mobile, 100%); } .mp-box.mp-hide-on-mobile { display: none; } } @media screen and (min-width: 990px) and (max-width: 1350px) { /* for narrow screens, between 990px and 1350px */ #mp-container { grid-template-areas:var(--main-page-layout--tablet); grid-template-columns:var(--main-page-layout-columns--tablet, 1fr 1fr); } .mp-box.mp-hide-on-tablet { display: none; } } @media screen and (min-width: 1350px) { /* for all other screens, 1350px and wider */ #mp-container { grid-template-areas:var(--main-page-layout--desktop); grid-template-columns:var(--main-page-layout-columns--desktop, 2fr 1fr 2fr); } .mp-box.mp-hide-on-desktop { display: none; } } .mp-box { position: relative; display: flex; flex-flow: column nowrap; width: 100%; box-sizing: border-box; background: color-mix(in srgb, var(--wiki-content-background-color--secondary) 25%, transparent); border: 1px solid var(--wiki-content-border-color); padding: 0px; } .mp-body { height: 100%; display: flex; padding: 0.5em; flex-flow: column nowrap; } .mp-box.centered-content .mp-body { height: 100%; display: flex; flex-flow: column nowrap; justify-content: space-evenly; } .mp-box.has-floating-image { display: block; } .mp-box.has-floating-image .mp-body { height: unset; display: block; } .mp-box.header-only { border-bottom-width:0px; } .mp-box.header-only .mp-body { display:none; } .mp-box.missing .mw-inputbox-input { /* max-width doesn't override the input element's 'size' property, but that property does work as a max-width itself, so we can set width:100% for the same effect */ width:100% !important; } /* overqualified to override normal heading styles */ .mw-body .mp-box h2 { text-align: center; font-weight: bold; font-family: var(--wiki-content-heading-font-family); overflow: initial; border-bottom: 1px solid var(--wiki-content-border-color); font-size: 150%; margin: 0; padding: 5px 0; color: var(--wiki-content-heading-color); } #mp-box-welcome { text-align: center; position: relative; overflow: hidden; } #mp-box-welcome h2 { font-size: 200%; } #mp-welcome { display: flex; flex-flow: column nowrap; position: relative; height: 100%; z-index: 2; box-sizing: border-box; } #mp-welcome .welcome-subtitle { height: 100%; background: color-mix(in srgb, var(--wiki-content-dynamic-color--inverted) 85%, transparent); padding: 0.5em; } #mp-banner { position: absolute; width: 100%; height: 100%; filter: blur(5px); z-index: -1; background: url(/images/e/e0/MP_banner.jpg); background-size: cover; background-repeat: no-repeat; background-position: top center; } .view-dark #mp-banner { filter: blur(5px) brightness(50%); } .view-light #mp-banner { filter: blur(5px) contrast(50%); } /* [[Template:MP_link]] */ .mp-links { --gap: 10px; } .mp-links > ul { display: flex; flex-flow: row wrap; justify-content: space-evenly; margin: 2px; gap: var(--gap); } .mp-links > ul > li { display: flex; flex-flow: column nowrap; align-items: stretch; text-align: center; box-sizing: border-box; flex: max(calc(50% - var(--gap)), 5em) 1 1; outline: 1px solid var(--wiki-content-link-color); transition: 0.1s ease-in; } .mp-links > ul > li:hover { background-color: color-mix(in srgb, var(--wiki-content-link-color) 20%, transparent); } .mp-links.columns-1 > ul > li {flex: max(calc(100% - var(--gap)), 5em) 1 1;} .mp-links.columns-2 > ul > li {flex: max(calc(50% - var(--gap)), 5em) 1 1;} .mp-links.columns-3 > ul > li {flex: max(calc((100% / 3) - var(--gap)), 5em) 1 1;} .mp-links.columns-4 > ul > li {flex: max(calc(25% - var(--gap)), 5em) 1 1;} .mp-links.columns-5 > ul > li {flex: max(calc(20% - var(--gap)), 5em) 1 1;} .mp-links.columns-6 > ul > li {flex: max(calc((100% / 6) - var(--gap)), 5em) 1 1;} .mp-links.columns-7 > ul > li {flex: max(calc((100% / 7) - var(--gap)), 5em) 1 1;} .mp-links.columns-8 > ul > li {flex: max(calc((100% / 8) - var(--gap)), 5em) 1 1;} .mp-links.columns-max > ul > li {flex: max(calc(0% - var(--gap)), 5em) 1 1;} .mp-links > ul > li:hover a { text-decoration: underline; } .mp-links > ul > li > a { display: flex; align-items: center; justify-content: center; height: 100%; flex: 1 1 auto; box-sizing: border-box; padding: 5px; } .mp-links > ul > li > a:first-child { height: 100%; } .mp-links > ul > li > a:last-child:not(:first-child) { height: unset; } .mp-links.stretch, .mp-links.stretch > ul { height: 100%; } .mp-links.side-image li { flex-flow: row nowrap; } .mp-links.plain > ul > li { outline-color: transparent; } /*********************** * End main page layout * ************************/ /********************************************************************************************************************* * Semantically-correct horizontal lists (for Module:Navbox, and they're more machine-readable than {{*}}-formatting) * **********************************************************************************************************************/ .hlist dl, .hlist ol, .hlist ul { margin: 0; padding: 0; } /* Display list items inline */ .hlist dd, .hlist dt, .hlist li { /* * don't trust the note that says margin doesn't work with inline * removing margin: 0 makes dds have margins again * We also want to reset margin-right in Minerva */ margin: 0; display: inline; } /* Display requested top-level lists inline */ .hlist.inline, .hlist.inline dl, .hlist.inline ol, .hlist.inline ul, /* Display nested lists inline */ .hlist dl dl, .hlist dl ol, .hlist dl ul, .hlist ol dl, .hlist ol ol, .hlist ol ul, .hlist ul dl, .hlist ul ol, .hlist ul ul { display: inline; } /* Hide empty list items */ .hlist .mw-empty-li { display: none; } /* TODO: :not() can maybe be used here to remove the later rule. naive test * seems to work. more testing needed. like so: */ .hlist dt:not(:last-child)::after { content: ":\20"; } .hlist dd:not(:last-child)::after, .hlist li:not(:last-child)::after { /* "space, Middle Dot, space" We use unicode numbers instead of the raw characters due to a Firefox encoding bug on unicode characters. The space is also encoded because raw spaces combined with a unicode number strips the spaces under some conditions such as single-line lists */ /* content: "\20\00B7\20"; font-weight: bold; */ /* "space &nbsp; • &nbsp; space" There may (and likely) be an extra whitespace between <li>s, therefore we have to use a space character as last character of this sequence. By this way, the last space and the next whitespace will collapse as a single space, to make the whitespace on both sides of the middle dot the same width. */ content: "\20\A0\2022\A0\20"; font-weight: inherit; } /* Add parentheses around nested lists */ .hlist dd ol::before, .hlist dd ul::before, .hlist dd dl::before, .hlist dt ol::before, .hlist dt ul::before, .hlist dt dl::before, .hlist li ol::before, .hlist li ul::before, .hlist li dl::before { content: "\20("; font-weight: inherit; } .hlist dd ol::after, .hlist dd ul::after, .hlist dd dl::after, .hlist dt ol::after, .hlist dt ul::after, .hlist dt dl::after, .hlist li ol::after, .hlist li ul::after, .hlist li dl::after { content: ")"; font-weight: inherit; } /* Put ordinals in front of ordered list items */ .hlist ol { counter-reset: listitem; } .hlist ol > li { counter-increment: listitem; } .hlist ol > li::before { content: " " counter(listitem) ".\20"; } /* Progressive enhancement: * try to make the dot always follow the list item in same line */ .hlist :is(li,dt,dd):not(:has(:is(li,dt,dd))) { display: inline-block; } /******************************************** * End semantically-correct horizontal lists * *********************************************/ /*** Miscellaneous ***/ .responsive-image { max-width: 100%; height: auto; box-sizing: border-box; } .view-dark .invert-on-dark, .view-light .invert-on-light { filter: invert(100%); } .pixelated { image-rendering: pixelated; } @media screen and (min-width: 720px) { .mobileonly { display: none; } } @media screen and (max-width: 720px) { .nomobile { display: none; } } /*** Utility classes for standard MW galleries ***/ /* it's important that spaced comes before centered in the sheet */ .gallery.gallery.gallery.spaced { /* this selector looks ridiculous but is actually part of stock Vector and therefore a necessary override */ display: flex; flex-flow: row wrap; justify-content: space-evenly; margin-left: unset; } .gallery.centered { text-align: center; } /************************** * Start Modular Templates * **************************/ /********* [[Template:Ambox]] *********/ .ambox { --ambox-color: var(--wiki-accent-color); border: 1px solid var(--wiki-content-border-color); border-left: 10px solid var(--ambox-color); border-radius: 2px; display: flex; align-items: center; gap: .6em; margin: 1em 0; padding: 3px .6em; background-color: var(--wiki-content-background-color--secondary); box-shadow: 2px 2px 5px 0px #0002; } @media (min-width: 720px) { .ambox { margin-inline: 10%; } } .ambox.tiny { padding: .04rem .5em; margin-inline: 0; width: fit-content; } .ambox + .ambox { margin-top: -.6em; } .ambox-content { flex: 1; } .ambox-content p { margin: .15em 0; } .ambox-title { font-weight: bold; } /********* [[Template:Hatnote]] *********/ .hatnote { padding: 1px 0 1px 1.6em; margin-bottom: 0.5em; font-style: italic; border-top: 1px solid var(--wiki-content-border-color--secondary); border-bottom: 1px solid var(--wiki-content-border-color--secondary); } .hatnote.icon { padding-left: 0; } /********* [[Template:Spoiler]] *********/ .spoiler-content { background-color: color-mix(in srgb, var(--wiki-content-dynamic-color) 50%, transparent); transition: all 0.3s; cursor: pointer; overflow: auto; } @supports not (color:color-mix(in srgb, #000, transparent)) { .spoiler-content { background-color: var(--wiki-content-dynamic-color--secondary); } } .spoiler-content > * { pointer-events: none; opacity: 0; transition: all 0.3s; } .spoiler-content.show { background-color: transparent; } .spoiler-content.show > * { pointer-events: unset; opacity: 1; } /********* [[Template:Link icon]] *********/ .link-icon { --link-icon-line-height: 1.5em; --link-icon-size: 1.5em; display: inline-flex; align-items: center; height: var(--link-icon-line-height); vertical-align: bottom; } .link-icon .regular { align-self: center; } .link-icon .regular a { display: flex; } .link-icon .regular img { height: var(--link-icon-size); max-width: var(--link-icon-size); } .link-icon .fallback { outline: 1px solid var(--wiki-content-text-color); border-radius: 50%; text-align: center; width: var(--link-icon-size); line-height: var(--link-icon-size); } .link-icon.notext, .link-icon.notext .fallback { display: inline-block; } /********* [[Template:Quote]] *********/ .quote { background: var(--wiki-content-background-color--secondary); border-radius: 5px; border: 2px solid var(--wiki-content-border-color); margin: .5em 0; padding: .5em; overflow-y: hidden; } .quote .block { display: block; } .quote .title { font-size: large; font-weight: bold; } .quote .content { font-style: italic; } .quote .author { font-weight: bold; text-align: end; } .quote .marks-wrapper { display: flex; gap: 5px; } .quote .marks-wrapper::before, .quote .marks-wrapper::after { font-size: 100px; line-height: 0px; } .quote .marks-wrapper::before { content: "\201C"; margin-top: 40px; } .quote .marks-wrapper::after { content: "\201D"; align-self: end; margin-bottom: -10px; } .client-js .mw-charinsert-item { display: none; } /************************ * End Modular Templates * *************************/ /***************************** * Used by [[Template:Color]] * ******************************/ .color__splotch { display: inline-block; height: 1em; width: 1em; box-sizing: border-box; vertical-align: text-top; border-radius: 50%; border: 1px solid var(--wiki-content-text-color); } /********************* * End Template:Color * **********************/ /********************************* * Used by [[Template:TOC limit]] * **********************************/ .toclimit-2 .toclevel-1 ul, .toclimit-3 .toclevel-2 ul, .toclimit-4 .toclevel-3 ul, .toclimit-5 .toclevel-4 ul, .toclimit-6 .toclevel-5 ul, .toclimit-7 .toclevel-6 ul { display: none; } /************************* * End Template:TOC limit * **************************/ /********************************* * Used by [[Template:TOC right]] * **********************************/ @media all and (min-width: 720px) { .tocright { float: right; clear: right; margin: 0 0 0.5em 1em; } } /************************* * End Template:TOC right * **************************/ 3c2719149e311061d3f79a029a2ca18b5995933a MediaWiki:Theme-definitions 8 240 264 2025-11-02T00:44:57Z ARTIFICER 564804 Importing default loadout wikitext text/x-wiki * light[bundled|kind=light] * dark[bundled|kind=dark] 05cdfdf87ea42919cc6ea267d3972cc06847ed60 MediaWiki:Gadgets/purge/main.js 8 241 265 2025-11-02T00:44:58Z ARTIFICER 564804 Importing default loadout javascript text/javascript $.when( $.ready ) .then(function(){ if ( document.getElementById( 'ca-cargo-purge' )){ return; } // disable if Cargo has already added a purge button if ( mw.config.get( 'wgNamespaceNumber' ) === -1 ) { return; } // disable on special pages var url = new URL(window.location.href); url.searchParams.set('action', 'purge'); var button = mw.util.addPortletLink('p-cactions', url.href, mw.msg('cargo-purgecache'), 'ca-gadget-purgecache', mw.msg('action-purge'), '1'); button.addEventListener('click', (function(event) { event.preventDefault(); var api = new mw.Api(); api.post({ action: 'purge', titles: mw.config.get('wgPageName'), forcerecursivelinkupdate: true }).then(function() { window.location.reload(true); }).fail(function(code) { mw.notify(mw.msg('cargo-purgecache-failed')+" "+code); }); })); }); 5d10082771b97fa1ba479534a973769321d887dc MediaWiki:Gadgets/userProfile/main.js 8 242 266 2025-11-02T00:44:58Z ARTIFICER 564804 Importing default loadout javascript text/javascript // User profile // <nowiki> mw.loader.using( [ 'mediawiki.util', 'mediawiki.api' ] ).done( function() { var config = mw.config.get( [ 'wgRelevantUserName', 'wgNamespaceNumber', 'wgUserLanguage', 'wgArticleId', 'wgAction', 'wgTitle' ] ); var username = config.wgRelevantUserName; if ( !username || window.loadedHorseUserProfile ) return; window.loadedHorseUserProfile = true; if ( config.wgNamespaceNumber !== -1 && config.wgTitle.includes('/') ) return; var lang = mw.language.bcp47(config.wgUserLanguage); var dateOptions = { year: "numeric", month: "short", day: "numeric", hour: "2-digit", minute: "2-digit", timeZone: "UTC", timeZoneName: "short" }; var api = new mw.Api(); if ( mw.util.isIPAddress(username) ) api.get( { action: 'query', list: ['usercontribs', 'blocks'], ucuser: username, ucprop: [], uclimit: 'max', bkip: username, bkprop: ['user', 'by', 'timestamp', 'expiry', 'flags', 'reason', 'restrictions'], bklimit: 1, formatversion: 2 } ).done( function(data) { var editcount = data.query.usercontribs.length; if ( data.continue && data.continue.uccontinue ) editcount = data.limits.usercontribs+'+'; var user = { groups: ['*'], editcount: editcount }; formatProfile(user, data.query.blocks[0]); } ); else api.get( { action: 'query', list: ['users', 'blocks'], ususers: username, usprop: ['groups', 'editcount', 'registration', 'emailable'], bkusers: username, bkprop: ['user', 'by', 'timestamp', 'expiry', 'flags', 'reason', 'restrictions'], bklimit: 1, formatversion: 2 } ).done( function(data) { formatProfile(data.query.users[0], data.query.blocks[0]); } ); if ( window.loadedHorseUserProfileContribs ) return; window.loadedHorseUserProfileContribs = true; if ( config.wgNamespaceNumber === 2 && !config.wgArticleId && config.wgAction === 'view' ) { mw.loader.using( [ 'mediawiki.pager.styles', 'mediawiki.special.changeslist' ] ).then( function() { var text = '== [[Special:Contributions/' + username + '|{{int:contributions-title|' + username + '}}]] ==\n{{Special:Contributions/' + username + '|limit=20}}'; new mw.Api().parse( text, { title: 'User:' + config.wgTitle, wrapoutputclass: 'horse-userprofile-contribs', disableeditsection: true, disablelimitreport: true, uselang: config.wgUserLanguage } ).done( function(parsedText) { mw.hook( 'wikipage.content' ).fire( $( parsedText ).appendTo('#mw-content-text') ); } ); } ); } function formatProfile(user, block) { user.groups.splice(user.groups.indexOf('*'), 1); var text = '<div class="horse-userprofile-info">'; if ( user.groups.length ) { var groupList = user.groups.map( function(group) { var grouppage = '{{MediaWiki:grouppage-'+group+'}}'; return [ '{{#ifexist: '+grouppage+' | [['+grouppage+'|{{int:group-'+group+'}}]] | {{int:group-'+group+'}} }}', '{{#ifexist: '+grouppage+' | [['+grouppage+'|{{int:group-'+group+'-member|'+username+'}}]] | {{int:group-'+group+'-member|'+username+'}} }}' ]; } ).reduce( function(prev, cur) { prev[0].push(cur[0]); prev[1].push(cur[1]); return prev; }, [[], []] ); text += '\n\n<span>{{int:prefs-memberingroups|'+user.groups.length+'|'+username+'}}</span>\t<span>{{int:prefs-memberingroups-type|'+mw.language.listToText(groupList[0])+'|'+mw.language.listToText(groupList[1])+'}}</span>'; if (mw.config.get('wgUserGroups').some(item => ['advocate', 'staff'].includes(item))) { //return true if their usergroups contain advocate or staff text += '<br/>([[Special:UserRights/' + username + '|{{int:tool-link-userrights|' + username + '}}]])' } } text += '\n\n<span>{{int:prefs-edits}}</span>\t<span>[[Special:Contribs/'+username+'|'+mw.language.convertNumber(user.editcount)+']]</span>'; if ( user.registration ) text += '\n\n<span>{{int:prefs-registration}}</span>\t<span>'+mw.language.convertNumber(new Date(user.registration).toLocaleString(lang, dateOptions))+'</span>'; // if ( user.userid && !user.emailable ) text += '\n\n<span>{{int:nowikiemailtext|'+username+'}}</span>'; text += '\n\n</div>'; if ( block && !$('.mw-warning-with-logexcerpt .mw-logevent-loglines > .mw-logline-block').length ) { var notice = 'sp-contributions-blocked-notice'; if ( mw.util.isIPAddress(block.user, true) ) notice += '-anon'; var logentry = 'logentry-block-block'; var partialBlock = []; if ( block.partial ) { notice += '-partial'; logentry = 'logentry-partialblock-block'; if ( block.restrictions.pages ) { var blockpages = block.restrictions.pages.map( function(page) { return '[['+page.title+']]'; } ); partialBlock.push('{{int:logentry-partialblock-block-page|'+blockpages.length+'|'+mw.language.listToText(blockpages)+'}}'); } if ( block.restrictions.namespaces ) { var blocknamespaces = block.restrictions.namespaces.map( function(namespace) { if ( !namespace ) return '[[Special:AllPages|{{int:blanknamespace}}]]'; return '[[Special:AllPages/{{ns:'+namespace+'}}:|{{ns:'+namespace+'}}]]'; } ); partialBlock.push('{{int:logentry-partialblock-block-ns|'+blocknamespaces.length+'|'+mw.language.listToText(blocknamespaces)+'}}'); } if ( block.restrictions.actions ) { var blockactions = block.restrictions.actions.map( function(action) { return '{{int:ipb-action-'+action+'}}'; } ); partialBlock.push('{{int:logentry-partialblock-block-action|'+blockactions.length+'|'+mw.language.listToText(blockactions)+'}}'); } if ( !partialBlock.length ) logentry = 'logentry-non-editing-block-block'; } var blockDate = new Date(block.timestamp); var blockexpiry = '{{int:infiniteblock}}'; if ( !['infinite', 'indefinite', 'infinity', 'never'].includes(block.expiry) ) { var expiry = new Date(block.expiry.replace( /(\d{4})(\d{2})(\d{2})(\d{2})(\d{2})(\d{2,3})/, '$1-$2-$3T$4:$5:$6Z' )); var duration = expiry - blockDate; var blockDuration = []; var factor = 1000; if ( duration % factor === 0 ) blockDuration = ['duration-seconds', Math.floor(duration / factor)]; factor *= 60; if ( duration % factor === 0 ) blockDuration = ['duration-minutes', Math.floor(duration / factor)]; factor *= 60; if ( duration % factor === 0 ) blockDuration = ['duration-hours', Math.floor(duration / factor)]; factor *= 24; if ( duration % factor === 0 ) blockDuration = ['duration-days', Math.floor(duration / factor)]; if ( duration % (factor*7) === 0 ) blockDuration = ['duration-weeks', Math.floor(duration / (factor*7))]; if ( duration % (factor*30) === 0 ) blockDuration = ['months', Math.floor(duration / (factor*30))]; factor *= 365; if ( duration % factor === 0 ) blockDuration = ['duration-years', Math.floor(duration / factor)]; if ( duration % (factor*10) === 0 ) blockDuration = ['duration-decades', Math.floor(duration / (factor*10))]; if ( duration % (factor*100) === 0 ) blockDuration = ['duration-centuries', Math.floor(duration / (factor*100))]; if ( duration % (factor*1000) === 0 ) blockDuration = ['duration-millennia', Math.floor(duration / (factor*1000))]; if ( blockDuration.length < 2 || blockDuration[1] > 1000 ) blockexpiry = mw.language.convertNumber(expiry.toLocaleString(lang, dateOptions)); else blockexpiry = '{{int:'+blockDuration.join('|')+'}}'; } var blockflags = ''; var blockflaglist = []; if ( block.anononly ) blockflaglist.push('{{int:block-log-flags-anononly}}'); if ( block.nocreate ) blockflaglist.push('{{int:block-log-flags-nocreate}}'); if ( !block.autoblock && !mw.util.isIPAddress(block.user, true) ) blockflaglist.push('{{int:block-log-flags-noautoblock}}'); if ( !block.allowusertalk ) blockflaglist.push('{{int:block-log-flags-nousertalk}}'); if ( block.noemail ) blockflaglist.push('{{int:block-log-flags-noemail}}'); if ( block.hidden ) blockflaglist.push('{{int:block-log-flags-hiddenname}}'); if ( blockflaglist.length ) blockflags = '{{int:parentheses|'+blockflaglist.join(mw.msg('comma-separator'))+'}}'; var blockreason = ' <span class="comment">{{int:parentheses|'+block.reason+'}}</span>'; if ( !block.reason ) blockreason = ''; text += '<div class="horse-userprofile-block cdx-message cdx-message--block cdx-message--warning mw-warning-with-logexcerpt"><span class="cdx-message__icon"></span><div class="cdx-message__content">\n{{int:'+notice+'|'+username+'}}\n'; text += '<ul class="mw-logevent-loglines"><li class="mw-logline-block">'+mw.language.convertNumber(blockDate.toLocaleString(lang, dateOptions))+' {{int:'+logentry+'|[[User:'+block.by+'|'+block.by+']] <span class="mw-usertoollinks mw-changeslist-links"><span>[[User talk:'+block.by+'|{{int:talkpagelinktext}}]]</span> <span>[[Special:Contribs/'+block.by+'|{{int:contribslink}}]]</span></span>|'+block.by; if ( mw.util.isIPAddress(block.user, true) ) text += '|[[Special:Contribs/'+block.user+'|'+block.user+']] <span class="mw-usertoollinks mw-changeslist-links"><span>[[User talk:'+block.user+'|{{int:talkpagelinktext}}]]</span></span>'; else text += '|[[User:'+block.user+'|'+block.user+']] <span class="mw-usertoollinks mw-changeslist-links"><span>[[User talk:'+block.user+'|{{int:talkpagelinktext}}]]</span> <span>[[Special:Contribs/'+block.user+'|{{int:contribslink}}]]</span></span>'; text += '|'+block.user+'|'+blockexpiry+'|'+blockflags+'|'+mw.language.listToText(partialBlock)+'}}'+blockreason+'</li></ul></div></div>'; } api.parse( '<div class="cdx-message__content">' + text + '</div>', { disablelimitreport: true, wrapoutputclass: 'horse-userprofile mw-message-box cdx-message mw-content-'+($('#mw-content-subtitle').attr('dir')||'ltr'), uselang: config.wgUserLanguage } ).done( function(parsedText) { parsedText = parsedText.replace( /\u29FCgroup-([^\u29FC\u29FD]+?)(?:-member)?\u29FD/g, '$1' ); mw.hook( 'wikipage.content' ).fire( $( parsedText ).appendTo('#contentSub') ); } ); } } ); // </nowiki> 65e00afacc077b14c908f3ff6280e3518f99a5b1 MediaWiki:Gadgets/userProfile/main.css 8 243 267 2025-11-02T00:44:58Z ARTIFICER 564804 Importing default loadout css text/css #contentSub > * + .horse-userprofile { margin-top: 1em; } .horse-userprofile { font-size: 120%; color: var(--wiki-content-text-color); border: 2px solid var(--wiki-content-border-color); padding: 6px 12px; } .horse-userprofile-info span:first-of-type { font-weight: bold; } 1729445bb17e2974426befaf9bd441ab4bf189c5 MediaWiki:Gadgets/uploadMultipleFiles/main.js 8 244 268 2025-11-02T00:44:58Z ARTIFICER 564804 Importing default loadout javascript text/javascript /* Modified version of https://dev.fandom.com/wiki/UploadMultipleFiles * from https://terraria.wiki.gg/wiki/MediaWiki:Gadget-uploadMultipleFiles.js */ $.when( mw.loader.using( ['site', 'mediawiki.util', 'mediawiki.api', 'mediawiki.jqueryMsg'] ), $.ready ) .then( () => new mw.Api().loadMessagesIfMissing([ 'gadget-uploadMultipleFiles-multiupload', 'gadget-uploadMultipleFiles-yes', 'gadget-uploadMultipleFiles-no', 'gadget-uploadMultipleFiles-sourcefiles', 'gadget-uploadMultipleFiles-categoryname', 'gadget-uploadMultipleFiles-categorynamehint', 'gadget-uploadMultipleFiles-categorynamespace', 'gadget-uploadMultipleFiles-uploadfiles', 'gadget-uploadMultipleFiles-nofiles', 'gadget-uploadMultipleFiles-nolicense', 'gadget-uploadMultipleFiles-summary', 'gadget-uploadMultipleFiles-license', 'gadget-uploadMultipleFiles-categories', 'gadget-uploadMultipleFiles-uploading', 'gadget-uploadMultipleFiles-uploaded', 'gadget-uploadMultipleFiles-failed', 'gadget-uploadMultipleFiles-done', 'gadget-uploadMultipleFiles-ratelimited', ]) ) .then(function(){ if (mw.config.get("wgCanonicalSpecialPageName") !== "Upload"){ return; } if (window.__wgg_UploadMultipleFiles_IsLoaded) { return; } window.__wgg_UploadMultipleFiles_IsLoaded = true; const getUploadDescription = function() { var sections = []; var summary = $("#wpUploadDescription").val(); var licenseDisplayName = $("#wpLicense option:selected").val(); var categoryName = $("#multiFileCategory").val(); if (summary !== ""){ sections.push(summary); } if (licenseDisplayName !== "") { var licenseTemplateText = $("#wpLicense option:selected").prop("title"); sections.push("== " + mw.msg("gadget-uploadMultipleFiles-license") + " ==\n" + licenseTemplateText); } if (categoryName !== "") sections.push("[[" + mw.msg("gadget-uploadMultipleFiles-categorynamespace") + ":" + categoryName + "]]"); return sections.join("\n\n"); }; const getWatchlistPreference = function() { if ($("#wpWatchthis").is(":checked")) { return "watch"; } else { return "nochange"; } }; $("#wpUploadFile").parent().parent().addClass("regularFileSelect"); $("tr.regularFileSelect").before( $("<tr></tr>").append( $('<td class="mw-label"></td>').msg("gadget-uploadMultipleFiles-multiupload"), $('<td class="mw-input"></td>').append( $("<label></label>").msg("gadget-uploadMultipleFiles-yes").prepend('<input type="radio" name="multipleFiles" value="yes" /> '), ' &nbsp; ', $("<label></label>").msg("gadget-uploadMultipleFiles-no" ).prepend('<input type="radio" name="multipleFiles" value="no" checked/> '), ) ) ).after( $('<tr class="multipleFileSelect" style="display:none;"></tr>').append( $('<td class="mw-label"></td>').msg("gadget-uploadMultipleFiles-sourcefiles"), $('<td class="mw-input"></td>').append('<input type="file" id="multiupload" multiple />') ) ); $("input[name='wpUpload']").addClass("regularFileSelect"); $("#wpDestFile").parent().parent().addClass("regularFileSelect"); $("#wpIgnoreWarning").parent().parent().addClass("regularFileSelect"); // Append "category name" textbox to multiupload section $("#mw-upload-form #mw-htmlform-description tbody").append( $('<tr class="mw-htmlform-field-HTMLTextField multipleFileSelect" style="display:none;"></tr>').append( $('<td class="mw-label"></td>').append('<label for="multiFileCategory"><abbr title="' + mw.msg("gadget-uploadMultipleFiles-categorynamehint") + '">' + mw.msg("gadget-uploadMultipleFiles-categoryname") + '</abbr></label>'), $('<td class="mw-input"></td>').append('<input id="multiFileCategory" name="multiFileCategory" size="60">') ) ); $("input[name='wpUpload']").after('<input type="button" value="' + mw.msg("gadget-uploadMultipleFiles-uploadfiles") + '" class="multipleFileSelect" style="display:none;" id="multiFileSubmit" />'); $("input[name='multipleFiles']").change(function() { if (this.value === 'yes') { $(".regularFileSelect").hide(); $(".multipleFileSelect").show(); } else { $(".regularFileSelect").show(); $(".multipleFileSelect").hide(); } }); $("#multiFileSubmit").click(function() { var files = $("#multiupload")[0].files; // Cancel upload if no files are selected if (files.length === 0) { alert(mw.msg("gadget-uploadMultipleFiles-nofiles")); return false; } // Cancel upload if no license is selected if ($("#wpLicense option:selected").val() === "" && !mw.config.get("UMFBypassLicenseCheck")) { alert(mw.msg("gadget-uploadMultipleFiles-nolicense")); return false; } // Description is summary + license + category var description = getUploadDescription(); var watch = getWatchlistPreference(); $("#firstHeading").msg("gadget-uploadMultipleFiles-uploading"); $("#mw-content-text").html("<h3>" + mw.msg("gadget-uploadMultipleFiles-uploaded") + "</h3><ul></ul><div style='display:none;' id='multiUploadFailed'><h3>" + mw.msg("gadget-uploadMultipleFiles-failed") + "</h3><ul></ul></div>"); var currentFileIdx = 0; var uploadCurrentFile; uploadCurrentFile = function() { if (currentFileIdx > files.length) { $("#mw-content-text").append($("<h3></h3>").msg("gadget-uploadMultipleFiles-done")); return; } if (files[currentFileIdx] === undefined) { currentFileIdx++; uploadCurrentFile(); return; } fd = new FormData(); fd.append("action", "upload"); fd.append("token", mw.user.tokens.get("csrfToken")); fd.append("filename", files[currentFileIdx].name); fd.append("file", files[currentFileIdx]); fd.append("text", description); fd.append("watchlist", watch); fd.append("ignorewarnings", 1); fd.append("format", "json"); const $output = $("#mw-content-text > ul"); const $failed = $("#multiUploadFailed"); const $failedOutput = $('#multiUploadFailed ul'); $.ajax({ url: mw.util.wikiScript("api"), method: "POST", data: fd, cache: false, contentType: false, processData: false, type: "POST" }).done(function(d) { if (d.error == undefined) { $output.append('<li><a href="' + d.upload.imageinfo.descriptionurl + '" target="_blank">' + d.upload.filename + '</a></li>'); } // specific catch for ratelimiting else if(d.error.code === "ratelimited") { timer = 60; console.log(mw.msg('gadget-uploadMultipleFiles-ratelimited', timer)); $message = $('<li class="multiUploadActive"></li>').msg('gadget-uploadMultipleFiles-ratelimited', $('<span id="rateLimitCounter">' + timer + '</span>')); $output.append($message); var countdown = setInterval(function(){ // count the timer down, and remove at 0 timer -= 1; document.getElementById('rateLimitCounter').textContent = timer; if (timer <= 0) { $message.remove() clearInterval(countdown); } }, 1000); setTimeout(function(){ // redundant clearing of the interval and message in case of race conditions clearInterval(countdown); $message.remove(); uploadCurrentFile(); }, timer * 1000); return; } // generic fallback else { $failedOutput.append('<li>' + files[currentFileIdx].name + ': ' + d.error.info + '</li>'); $failed.show(); } currentFileIdx++; uploadCurrentFile(); }).fail(function() { $failedOutput.append('<li>' + files[currentFileIdx].name + '</li>'); $failed.show(); currentFileIdx++; uploadCurrentFile(); }); }; uploadCurrentFile(); }); }); f47e56dc31399578758f15aafbdf732564a80bd3 MediaWiki:Licenses 8 245 269 2025-11-02T00:44:59Z ARTIFICER 564804 Importing default loadout wikitext text/x-wiki *Game content ** License|game|This contains content from the game or its official media *Commonly used ** License|fairuse|This will be used in a way that qualifies as "fair use" under US law ** License|CC0|This file is licensed under the CC0 1.0 License ** License|CC-BY-NC-ND|This is licensed under the Creative Commons Attribution-NonCommercial-NoDerivs 3.0 License ** License|CC-BY-NC-SA|This is licensed under the Creative Commons Attribution-NonCommercial-ShareAlike 3.0 License ** License|CC-BY-NC|This is licensed under the Creative Commons Attribution-NonCommercial 3.0 License ** License|CC-BY-ND|This is licensed under the Creative Commons Attribution-NoDerivs 3.0 License ** License|CC-BY-SA|This is licensed under the Creative Commons Attribution-ShareAlike 3.0 License ** License|permission|The copyright holder gave permission to use this work only in wiki.gg articles ** License|CC-BY|This is licensed under the Creative Commons Attribution 3.0 License ** License|CC-PD|This is in the public domain ** License|CC-SRR|This is licensed under the Creative Commons Some Rights Reserved License *Unsure or unknown ** License|nolicense|I don't know the license 80cf31331a258a3fc3651f6d5961fbb5c1822cee MediaWiki:Copyright 8 246 270 2025-11-02T00:44:59Z ARTIFICER 564804 Importing default loadout wikitext text/x-wiki {{int:wikigg-copyright|CC BY-SA 4.0|$1}} 999f12b472b0177c515e14cda21d5e4ddc0603e1 MediaWiki:Mainpage 8 247 271 2025-11-02T00:45:00Z ARTIFICER 564804 Importing default loadout wikitext text/x-wiki {{SITENAME}} 3879910e8b355a24373fd09ccc909145b2639907 MediaWiki:Apioutput.css 8 248 272 2025-11-02T00:45:01Z ARTIFICER 564804 Importing default loadout css text/css /* All CSS here is applied on api.php pages */ @media (prefers-color-scheme: dark) { body { background-color:#20211f; border-color: #7b7261; color: #f6ecdb; } h1, h2, h3, h4, h5, h6 { color: rgb(234, 224, 207); border-color: rgb(83, 84, 81); } .mw-highlight .s2 { color: rgb(206, 99, 91); } a { color: rgb(133, 180, 221); } a:visited { color: rgb(141, 127, 218); } pre, code, .mw-code { background-color: rgb(34, 35, 33); color: rgb(234, 224, 207); border-color: rgb(63, 64, 62); } } c95cf2c22c12d821f22b745f2aa78d4f6f711500 MediaWiki:Gadgets/hoverShowSpoilers/main.css 8 249 273 2025-11-02T00:45:01Z ARTIFICER 564804 Importing default loadout css text/css .spoiler-content:hover > * { pointer-events:unset; opacity: 1; } .spoiler-content:hover { background-color: transparent; } 1c73aafcb749d7e0e9107c1045310d2af70aae7e MediaWiki:Common.css/doc 8 250 274 2025-11-02T00:45:02Z ARTIFICER 564804 Importing default loadout wikitext text/x-wiki <div class="mw-parser-output" id="dl-variable-doc"><!-- hide this in your global.css if you're familiar with how default loadout works and this documentation is just in your way --> <h2>Documentation</h2> This wiki is using the theming template from the [[dlw:|default loadout]]. This template is intended to minimize the work required to create a custom colored version of the standard [[mw:Skin:Vector|Vector]] skin, while maximizing the various nooks and crannies that those colors reach, all while keeping everything legible and matching. Please be aware of the [[support:Customization policy|customization policy]] when modifying the theme. <h3>Themes</h3> The [[support:Theme Toggle|Theme Toggle]] extension is installed, and allows multiple themes to be used. In the actual stylesheet below this documentation, you'll find two huge rules at the top, each containing lots of [https://developer.mozilla.org/en-US/docs/Web/CSS/Using_CSS_custom_properties CSS color variables]. They look like this: <syntaxhighlight lang=css> :root, /* Begin light styles, delete from here to "end light styles" if you don't want your wiki to support any light themes (remove from [[Mediawiki:Theme-definitions]] too, or ask wiki.gg staff for help doing this) */ /* FYI: .view- will affect any theme marked |kind=light, */ /* individual themes are prefixed with .theme- instead */ .view-light { /********************** * Probably edit these * [ LIGHT VIEW ] ***********************/ --wiki-body-background-color: #F6F6F6; --wiki-body-background-image: url(filepath://Site-background.jpg); /* and so on */ } .view-dark { /********************** * Probably edit these * [ DARK VIEW ] ***********************/ --wiki-body-background-color: #171717; --wiki-body-background-image: url(filepath://Site-background-dark.jpg); /* and so on */ } </syntaxhighlight> These are the standard light and dark themes, defined in [[Mediawiki:Theme-definitions]]. '''Important''': if you want your wiki to only support a single theme, edit that page and remove the line you don't want (don't remove both). The <code>:root</code> selector is a fallback, meaning that in case something happens and Theme Toggle fails to work, the following theme will still mostly work. If you have multiple themes, you can move the <code>:root</code> rule to whichever you'd consider the "default" theme. <h3>Non-color variables</h3> {| class="wikitable" ! Variable name !! Notes |- | --wiki-body-background-image | This is the image path to the wiki's background image. Usually this is uploaded to File:Site-background.jpg, File:Site-background-light.jpg, and/or File:Site-background-dark.jpg. While there's not a hard file size limit, it is recommended that this not exceed 250 KB. File size can be reduced by resizing (anything over 2560x1440p is excessive), converting to a jpg, and compressed using sites like [https://tinypng.com TinyPNG]. |- | --wiki-body-background-position | The [https://developer.mozilla.org/en-US/docs/Web/CSS/background-position background-position] of the background image. Usually this is set to <code>top center</code>. |- | --wiki-body-background-size | The [https://developer.mozilla.org/en-US/docs/Web/CSS/background-size background-size] of the background image. Usually this is set to <code>cover</code>. |- | --wiki-body-background-repeat | The [https://developer.mozilla.org/en-US/docs/Web/CSS/background-repeat background-repeat] of the background image. Usually this is set to <code>no-repeat</code>. |- | --wiki-body-background-attachment | The [https://developer.mozilla.org/en-US/docs/Web/CSS/background-attachment background-attachment] of the background image. Usually this is set to <code>fixed</code>. |- | --wiki-body-font-family | The font family of most of the wiki, such as the sidebar, navigation, and content text. Usually this is sans-serif. If modifying this, use a simple font that is easy to read. See <code>--wiki-content-heading-font-family</code> if you want to incorporate a more decorative font into the theme. |- | --wiki-content-heading-font-family | The font family of headings, such as the page title and section headings. This font is usually displayed in a larger size, so it's safer to use a more decorative font than <code>--wiki-body-font-family</code>, but still try to keep it legible. |- | --wiki-sidebar-heading-font-family | The font family of sidebar headings. In contrast to <code>--wiki-content-heading-font-family</code>, this is usually displayed in a smaller size, so keep it simple and easy to read. |- | --wiki-sidebar-border-radius | The [https://developer.mozilla.org/en-US/docs/Web/CSS/border-radius border-radius] of the sidebar. If <code>--wiki-sidebar-portal-spacing</code> is set to 0, then only the top and bottom corners of the sidebar as a whole will be affected, otherwise every portal will have all its corners affected. Units must be specified even if this is set to 0. |- | --wiki-sidebar-portal-spacing | The space between each portal in the sidebar. Units must be specified even if this is set to 0. |- | --wiki-content-border-width | The thickness of the border around the content area. |- | --wiki-sidebar-border-width | The thickness of the border around the sidebar portals. |- | --wiki-content-background-opacity | The opacity of the main content area, to let the wiki's background image show through. Please keep this high, usually above 90%, or it can make reading text difficult. |- | --wiki-sidebar-background-opacity | The background opacity of the sidebar. Usually this inherits <code>--wiki-content-background-opacity</code>. |- | --wiki-icon-general-filter | A filter applied to many icons to make them visible on dark themes. Usually this is just <code>invert(100%)</code> on dark themes and blank on light themes. |- | --wiki-icon-to-link-filter | A filter that converts many icons into the same color as <code>--wiki-content-link-color</code>. This can be generated by plugging that into https://mrpie5.gitlab.io/css-filter-generator/. |} <h3>List of all colors with contrast checking</h3> The table below shows all the colors currently in use, as well as notes on how to use them. The last column shows which colors are expected to show up as text against other colors. With the exception of <code>--wiki-content-text-mix-color-95</code>, all text in the last column should be ''clearly'' legible. If it is not, you may need to adjust one of the referenced colors in your color palette. Keep in mind that changes to the opacity variables in the section above will cause the content and sidebar background colors to mix with the body background color/image, so the contrasts below may not be perfectly accurate. {| class="wikitable" ! Variable name !! Color !! style="width: 40em;" | Notes !! Test contrast against these variables |- | --wiki-body-background-color | style="background-color:var(--wiki-body-background-color);" | | The background color behind the background image. This usually only shows up if the background image doesn't load, doesn't fill the screen, or has some transparency. This color should be similar to the overall color of the background image, or the top-left corner if it is made up of many different colors. In the former case, https://matkl.github.io/average-color/ is helpful. | style="background-color:var(--wiki-body-background-color);" | <span style="color:var(--wiki-body-dynamic-color);">--wiki-body-dynamic-color</span><br/> <span style="color:var(--wiki-body-dynamic-color--secondary);">--wiki-body-dynamic-color--secondary</span><br/> |- | --wiki-body-dynamic-color | style="background-color:var(--wiki-body-dynamic-color);" | | This is expected to contrast sharply with the body-background-color, for cases when text needs to be displayed against it. Usually this is {{color|#000}} on light themes and {{color|#fff}} on dark themes. | style="background-color:var(--wiki-body-dynamic-color);" | <span style="color:var(--wiki-body-background-color)">--wiki-body-background-color</span><br/> <span style="color:var(--wiki-body-dynamic-color--inverted);">--wiki-body-dynamic-color--inverted</span><br/> <span style="color:var(--wiki-body-dynamic-color--secondary--inverted);">--wiki-body-dynamic-color--secondary--inverted</span><br/> |- | --wiki-body-dynamic-color--inverted | style="background-color:var(--wiki-body-dynamic-color--inverted);" | | The inverse of <code>--wiki-body-dynamic-color</code>. This should optimally have almost no contrast with the body-background-color. | style="background-color:var(--wiki-body-dynamic-color--inverted);" | <span style="color:var(--wiki-body-dynamic-color);">--wiki-body-dynamic-color</span><br/> <span style="color:var(--wiki-body-dynamic-color--secondary);">--wiki-body-dynamic-color--secondary</span><br/> |- | --wiki-body-dynamic-color--secondary | style="background-color:var(--wiki-body-dynamic-color--secondary);" | | A slightly different version of body-dynamic-color. Usually this is {{color|#333}} on light themes and {{color|#ccc}} on dark themes. | style="background-color:var(--wiki-body-dynamic-color--secondary);" | <span style="color:var(--wiki-body-background-color)">--wiki-body-background-color</span><br/> <span style="color:var(--wiki-body-dynamic-color--inverted);">--wiki-body-dynamic-color--inverted</span><br/> <span style="color:var(--wiki-body-dynamic-color--secondary--inverted);">--wiki-body-dynamic-color--secondary--inverted</span><br/> |- | --wiki-body-dynamic-color--secondary--inverted | style="background-color:var(--wiki-body-dynamic-color--secondary--inverted);" | | The inverse of <code>--wiki-body-dynamic-color--secondary</code>. | style="background-color:var(--wiki-body-dynamic-color--secondary--inverted);" | <span style="color:var(--wiki-body-dynamic-color);">--wiki-body-dynamic-color</span><br/> <span style="color:var(--wiki-body-dynamic-color--secondary);">--wiki-body-dynamic-color--secondary</span><br/> |- | --wiki-content-background-color | style="background-color:var(--wiki-content-background-color);" | | The background color of the main content area. | style="background-color:var(--wiki-content-background-color);" | <span style="color:var(--wiki-content-text-color)">--wiki-content-text-color</span><br/> <span style="color:var(--wiki-content-link-color)">--wiki-content-link-color</span><br/> <span style="color:var(--wiki-content-link-color--visited)">--wiki-content-link-color--visited</span><br/> <span style="color:var(--wiki-content-link-color--hover)">--wiki-content-link-color--hover</span><br/> <span style="color:var(--wiki-content-redlink-color)">--wiki-content-redlink-color</span><br/> <span style="color:var(--wiki-content-text-mix-color)">--wiki-content-text-mix-color</span><br/> <span style="color:var(--wiki-content-dynamic-color)">--wiki-content-dynamic-color</span><br/> <span style="color:var(--wiki-content-dynamic-color--secondary)">--wiki-content-dynamic-color--secondary</span><br/> <span style="color:var(--wiki-content-heading-color)">--wiki-content-heading-color</span><br/> <span style="color:var(--wiki-accent-color)">--wiki-accent-color</span><br/> <span style="color:var(--wiki-neutral-color)">--wiki-neutral-color</span><br/> <span style="color:var(--wiki-success-color)">--wiki-success-color</span><br/> <span style="color:var(--wiki-alert-color)">--wiki-alert-color</span><br/> |- | --wiki-content-background-color--secondary | style="background-color:var(--wiki-content-background-color--secondary);" | | A secondary content background to highlight certain things. Usually this is <code>--wiki-content-background-color</code> with saturation and/or value reduced or increased by about 10%, but you're free to make it whatever you want provided the contrast checks to the right still pass. | style="background-color:var(--wiki-content-background-color--secondary);" | <span style="color:var(--wiki-content-text-color)">--wiki-content-text-color</span><br/> <span style="color:var(--wiki-content-link-color)">--wiki-content-link-color</span><br/> <span style="color:var(--wiki-content-link-color--visited)">--wiki-content-link-color--visited</span><br/> <span style="color:var(--wiki-content-link-color--hover)">--wiki-content-link-color--hover</span><br/> <span style="color:var(--wiki-content-redlink-color)">--wiki-content-redlink-color</span><br/> <span style="color:var(--wiki-content-text-mix-color)">--wiki-content-text-mix-color</span><br/> <span style="color:var(--wiki-content-dynamic-color)">--wiki-content-dynamic-color</span><br/> <span style="color:var(--wiki-content-dynamic-color--secondary)">--wiki-content-dynamic-color--secondary</span><br/> <span style="color:var(--wiki-content-heading-color)">--wiki-content-heading-color</span><br/> <span style="color:var(--wiki-accent-color)">--wiki-accent-color</span><br/> <span style="color:var(--wiki-neutral-color)">--wiki-neutral-color</span><br/> <span style="color:var(--wiki-success-color)">--wiki-success-color</span><br/> <span style="color:var(--wiki-alert-color)">--wiki-alert-color</span><br/> |- | --wiki-content-border-color | style="background-color:var(--wiki-content-border-color);" | | Border color for the main content area and elements within it. | N/A |- | --wiki-content-border-color--secondary | style="background-color:var(--wiki-content-border-color--secondary);" | | A secondary content border color for elements that do not need to stand out as much. Usually this is <code>--wiki-content-border-color</code> with 50% transparency, but it can be adjusted or made identical if it is too subtle. | N/A |- | --wiki-content-border-color--accent | style="background-color:var(--wiki-content-border-color--accent);" | | A border color that is used as an accent. Usually this is <code>--wiki-accent-color</code> with 50% transparency, but it can be any variation of the accent color. | N/A |- | --wiki-content-text-color | style="background-color:var(--wiki-content-text-color);" | | Text color for the main content area. | style="background-color:var(--wiki-content-text-color);" | <span style="color:var(--wiki-content-background-color)">--wiki-content-background-color</span><br/> <span style="color:var(--wiki-content-background-color--secondary)">--wiki-content-background-color--secondary</span><br/> |- | --wiki-content-link-color | style="background-color:var(--wiki-content-link-color);" | | Links within the content area. Please do not make this red, as red links on wikis traditionally denote pages that don't exist. | style="background-color:var(--wiki-content-link-color);" | <span style="color:var(--wiki-content-link-label-color);">--wiki-content-link-label-color</span> |- | --wiki-content-link-label-color | style="background-color:var(--wiki-content-link-label-color);" | | This is used when placing text on an element with the link color as a background, such as a button. | style="background-color:var(--wiki-content-link-label-color);" | <span style="color:var(--wiki-content-link-color);">--wiki-content-link-color</span> |- | --wiki-content-link-color--visited | style="background-color:var(--wiki-content-link-color--visited);" | | The color of visited links. This is optional, and usually inherits <code>--wiki-content-link-color</code>. | style="background-color:var(--wiki-content-link-color--visited);" | <span style="color:var(--wiki-content-background-color);">--wiki-content-background-color</span><br/> <span style="color:var(--wiki-content-background-color--secondary);">--wiki-content-background-color--secondary</span> |- | --wiki-content-link-color--hover | style="background-color:var(--wiki-content-link-color--hover);" | | The color links change to when hovered over. This is optional, and usually inherits <code>--wiki-content-link-color</code>. | style="background-color:var(--wiki-content-link-color--hover);" | <span style="color:var(--wiki-content-background-color);">--wiki-content-background-color</span><br/> <span style="color:var(--wiki-content-background-color--secondary);">--wiki-content-background-color--secondary</span> |- | --wiki-content-redlink-color | style="background-color:var(--wiki-content-redlink-color);" | | The color of links to pages that don't exist. Since these should only rarely be seen, you can be a little lax about choosing a color that contrasts with the background, but it should still be legible. | style="background-color:var(--wiki-content-redlink-color);" | <span style="color:var(--wiki-content-background-color);">--wiki-content-background-color</span><br/> <span style="color:var(--wiki-content-background-color--secondary);">--wiki-content-background-color--secondary</span> |- | --wiki-content-text-mix-color | style="background-color:var(--wiki-content-text-mix-color);" | | A mix of <code>--wiki-content-text-color</code> and <code>--wiki-content-background-color</code>, calculated automatically. This is generally used to mark disabled elements or placeholder text. | style="background-color:var(--wiki-content-text-mix-color);" | <span style="color:var(--wiki-content-background-color)">--wiki-content-background-color</span><br/> <span style="color:var(--wiki-content-background-color--secondary)">--wiki-content-background-color--secondary</span><br/> <span style="color:var(--wiki-content-text-mix-color-95)">--wiki-content-text-mix-color-95</span> |- | --wiki-content-text-mix-color-95 | style="background-color:var(--wiki-content-text-mix-color-95);" | | The same as <code>--wiki-content-text-mix-color</code>, but the mix is 95% <code>--wiki-content-background-color</code>, calculated automatically. This is used to mark disabled elements. The contrast checker to the right should actually be very hard to read but not impossible. | style="background-color:var(--wiki-content-text-mix-color-95);" | <span style="color:var(--wiki-content-background-color)">--wiki-content-background-color</span><br/> <span style="color:var(--wiki-content-background-color--secondary)">--wiki-content-background-color--secondary</span> |- | --wiki-content-dynamic-color | style="background-color:var(--wiki-content-dynamic-color);" | | This is expected to contrast sharply with <code>--wiki-content-background-color</code>. Usually this is {{color|#000}} on light themes and {{color|#fff}} on dark themes. | style="background-color:var(--wiki-content-dynamic-color);" | <span style="color:var(--wiki-content-background-color)">--wiki-content-background-color</span><br/> <span style="color:var(--wiki-content-dynamic-color--inverted)">--wiki-content-dynamic-color--inverted</span><br/> <span style="color:var(--wiki-content-dynamic-color--secondary--inverted)">--wiki-content-dynamic-color--secondary--inverted</span><br/> |- | --wiki-content-dynamic-color--inverted | style="background-color:var(--wiki-content-dynamic-color--inverted);" | | The inverse of <code>--wiki-content-dynamic-color</code>. | style="background-color:var(--wiki-content-dynamic-color--inverted);" | <span style="color:var(--wiki-content-dynamic-color)">--wiki-content-dynamic-color</span><br/> <span style="color:var(--wiki-content-dynamic-color--secondary)">--wiki-content-dynamic-color--secondary</span><br/> |- | --wiki-content-dynamic-color--secondary | style="background-color:var(--wiki-content-dynamic-color--secondary);" | | A slightly different version of <code>--wiki-content-dynamic-color</code>. Usually this is {{color|#333}} on light themes and {{color|#ccc}} on dark themes. | style="background-color:var(--wiki-content-dynamic-color--secondary);" | <span style="color:var(--wiki-content-background-color)">--wiki-content-background-color</span><br/> <span style="color:var(--wiki-content-dynamic-color--inverted)">--wiki-content-dynamic-color--inverted</span><br/> <span style="color:var(--wiki-content-dynamic-color--secondary--inverted)">--wiki-content-dynamic-color--secondary--inverted</span><br/> |- | --wiki-content-dynamic-color--secondary--inverted | style="background-color:var(--wiki-content-dynamic-color--secondary--inverted);" | | The inverse of <code>--wiki-content-dynamic-color--secondary</code>. | style="background-color:var(--wiki-content-dynamic-color--secondary--inverted);" | <span style="color:var(--wiki-content-dynamic-color)">--wiki-content-dynamic-color</span><br/> <span style="color:var(--wiki-content-dynamic-color--secondary)">--wiki-content-dynamic-color--secondary</span><br/> |- | --wiki-content-heading-color | style="background-color:var(--wiki-content-heading-color);" | | The color of headings, such as the page title and section headings. Usually this is set to <code>--wiki-content-text-color</code>, but feel free to give it a different color to spice up the theme a little. | style="background-color:var(--wiki-content-heading-color);" | <span style="color:var(--wiki-content-background-color)">--wiki-content-background-color</span> |- | --wiki-accent-color | style="background-color:var(--wiki-accent-color);" | | Used to style infoboxes, navboxes, focused element outlines, and some buttons, such as the save button when editing. | style="background-color:var(--wiki-accent-color);" | <span style="color:var(--wiki-accent-label-color)">--wiki-accent-label-color</span><br/> <span style="color:var(--wiki-accent-link-color)">--wiki-accent-link-color</span><br/> <span style="color:var(--wiki-content-background-color)">--wiki-content-background-color</span><br/> <span style="color:var(--wiki-content-background-color--secondary)">--wiki-content-background-color--secondary</span><br/> |- | --wiki-accent-color--hover | style="background-color:var(--wiki-accent-color--hover);" | | The color of accent-color when hovered over, in some cases. Usually this is just accent-color with saturation and/or value reduced or increased by about 10%, but you're free to make it whatever you want provided the contrast checks to the right still pass. | style="background-color:var(--wiki-accent-color--hover);" | <span style="color:var(--wiki-accent-label-color)">--wiki-accent-label-color</span> |- | --wiki-accent-label-color | style="background-color:var(--wiki-accent-label-color);" | | The color of normal text against the accent color. | style="background-color:var(--wiki-accent-label-color);" | <span style="color:var(--wiki-accent-color)">--wiki-accent-color</span><br/> <span style="color:var(--wiki-accent-color--hover)">--wiki-accent-color--hover</span><br/> |- | --wiki-accent-link-color | style="background-color:var(--wiki-accent-link-color);" | | The color of links against the accent color. | style="background-color:var(--wiki-accent-link-color);" | <span style="color:var(--wiki-accent-color)">--wiki-accent-color</span> |- | --wiki-sidebar-background-color | style="background-color:var(--wiki-sidebar-background-color);" | | The background color of the sidebar to the left of the content area. Usually this inherits <code>--wiki-content-background-color</code>. | style="background-color:var(--wiki-sidebar-background-color);" | <span style="color:var(--wiki-sidebar-link-color)">--wiki-sidebar-link-color</span><br/> <span style="color:var(--wiki-sidebar-heading-color)">--wiki-sidebar-heading-color</span><br/> |- | --wiki-sidebar-border-color | style="background-color:var(--wiki-sidebar-border-color);" | | The border color of the sidebar. Usually this inherits <code>--wiki-content-border-color</code>. | N/A |- | --wiki-sidebar-link-color | style="background-color:var(--wiki-sidebar-link-color);" | | The color of links in the sidebar. Usually this inherits <code>--wiki-content-link-color</code>. | style="background-color:var(--wiki-sidebar-link-color);" | <span style="color:var(--wiki-sidebar-background-color)">--wiki-sidebar-background-color</span> |- | --wiki-sidebar-link-color--hover | style="background-color:var(--wiki-sidebar-link-color--hover);" | | The color links change to when hovered over. This is optional, and usually inherits <code>--wiki-content-link-color--hover</code>. | style="background-color:var(--wiki-sidebar-link-color--hover);" | <span style="color:var(--wiki-sidebar-background-color)">--wiki-sidebar-background-color</span> |- | --wiki-sidebar-heading-color | style="background-color:var(--wiki-sidebar-heading-color);" | | The color of headings in the sidebar. Usually this inherits <code>--wiki-content-heading-color</code>. | style="background-color:var(--wiki-sidebar-heading-color);" | <span style="color:var(--wiki-sidebar-background-color)">--wiki-sidebar-background-color</span> |- | --wiki-navigation-background-color | style="background-color:var(--wiki-navigation-background-color);" | | The primary background color of the navigation tabs above the content area. Usually this inherits <code>--wiki-content-background-color--secondary</code>. | style="background-color:var(--wiki-navigation-background-color);" | <span style="color:var(--wiki-navigation-text-color)">--wiki-navigation-text-color</span><br/> |- | --wiki-navigation-background-color--secondary | style="background-color:var(--wiki-navigation-background-color--secondary);" | | The upper background color of the navigation tabs, as well as the background color of the "More" menu dropdown. Usually this inherits <code>--wiki-content-background-color</code>. | style="background-color:var(--wiki-navigation-background-color--secondary);" | <span style="color:var(--wiki-navigation-text-color)">--wiki-navigation-text-color</span><br/> |- | --wiki-navigation-border-color | style="background-color:var(--wiki-navigation-border-color);" | | Border color of the navigation tabs. Usually this inherits <code>--wiki-content-border-color</code>. | N/A |- | --wiki-navigation-text-color | style="background-color:var(--wiki-navigation-text-color);" | | The color of text in the navigation tabs. Usually this inherits <code>--wiki-content-link-color</code>. | style="background-color:var(--wiki-navigation-text-color);" | <span style="color:var(--wiki-navigation-background-color)">--wiki-navigation-background-color</span><br/> <span style="color:var(--wiki-navigation-background-color--secondary)">--wiki-navigation-background-color--secondary</span><br/> |- | --wiki-navigation-text-color--hover | style="background-color:var(--wiki-navigation-text-color--hover);" | | The color of text in the navigation tabs when hovered. Usually this inherits <code>--wiki-content-link-color--hover</code>. | style="background-color:var(--wiki-navigation-text-color--hover);" | <span style="color:var(--wiki-navigation-background-color)">--wiki-navigation-background-color</span><br/> <span style="color:var(--wiki-navigation-background-color--secondary)">--wiki-navigation-background-color--secondary</span><br/> |- | --wiki-navigation-selected-background-color | style="background-color:var(--wiki-navigation-selected-background-color);" | | The background color of the currently active navigation tab. Usually this inherits <code>--wiki-content-background-color</code> | style="background-color:var(--wiki-navigation-selected-background-color);" | <span style="color:var(--wiki-navigation-selected-text-color)">--wiki-navigation-selected-text-color</span><br/> |- | --wiki-navigation-selected-border-color | style="background-color:var(--wiki-navigation-selected-border-color);" | | The border color of the currently active navigation tab. Usually this inherits <code>--wiki-navigation-border-color</code> | N/A |- | --wiki-navigation-selected-text-color | style="background-color:var(--wiki-navigation-selected-text-color);" | | The text color of the currently active navigation tab. Usually this inherits <code>--wiki-content-text-color</code> | style="background-color:var(--wiki-navigation-selected-text-color);" | <span style="color:var(--wiki-navigation-selected-background-color)">--wiki-navigation-selected-background-color</span><br/> |- | --wiki-neutral-color | style="background-color:var(--wiki-neutral-color);" | | A gray-ish color for displaying neutral text, such as a diff size of 0 in RecentChanges and page history. Usually this inherits <code>--wiki-content-text-mix-color</code>, but can be set explicitly if that color is not gray enough. | style="background-color:var(--wiki-neutral-color);" | <span style="color:var(--wiki-content-background-color)">--wiki-content-background-color</span><br/> <span style="color:var(--wiki-content-background-color--secondary)">--wiki-content-background-color--secondary</span> |- | --wiki-alert-color | style="background-color:var(--wiki-alert-color);" | | A general, usually red-ish color used for negative notices, most notably negative diffs in RecentChanges and page history, and the "cancel" button when editing. | style="background-color:var(--wiki-alert-color);" | <span style="color:var(--wiki-alert-label-color)">--wiki-alert-label-color</span><br/> <span style="color:var(--wiki-content-background-color)">--wiki-content-background-color</span><br/> <span style="color:var(--wiki-content-background-color--secondary)">--wiki-content-background-color--secondary</span><br/> |- | --wiki-alert-label-color | style="background-color:var(--wiki-alert-label-color);" | | The color of text against <code>--wiki-alert-color</code> as a background. | style="background-color:var(--wiki-alert-label-color);" | <span style="color:var(--wiki-alert-color)">--wiki-alert-color</span><br/> |- | --wiki-warning-color | style="background-color:var(--wiki-warning-color);" | | A general, usually orange-ish color used for warning notices. | style="background-color:var(--wiki-warning-color);" | <span style="color:var(--wiki-warning-label-color)">--wiki-warning-label-color</span><br/> <span style="color:var(--wiki-content-background-color)">--wiki-content-background-color</span><br/> |- | --wiki-warning-label-color | style="background-color:var(--wiki-warning-label-color);" | | The color of text against <code>--wiki-warning-color</code> as a background. | style="background-color:var(--wiki-warning-label-color);" | <span style="color:var(--wiki-warning-color)">--wiki-warning-color</span><br/> |- | --wiki-success-color | style="background-color:var(--wiki-success-color);" | | A general, usually green-ish color used for success notices, most noticeably positive diffs in RecentChanges and page history. | style="background-color:var(--wiki-success-color);" | <span style="color:var(--wiki-success-label-color)">--wiki-success-label-color</span><br/> <span style="color:var(--wiki-content-background-color)">--wiki-content-background-color</span><br/> <span style="color:var(--wiki-content-background-color--secondary)">--wiki-content-background-color--secondary</span><br/> |- | --wiki-success-label-color | style="background-color:var(--wiki-success-label-color);" | | The color of text against <code>--wiki-success-color</code> as a background. | style="background-color:var(--wiki-success-label-color);" | <span style="color:var(--wiki-success-color)">--wiki-success-color</span><br/> |} <h2>Stylesheet</h2> <!-- When rendered on common.css, the actual stylesheet will be right here --> </div> 034ef1fb6eaaf693a45f7ab4ea455a1e485bb147 MediaWiki:DataMaps.css 8 251 275 2025-11-02T00:45:02Z ARTIFICER 564804 Importing default loadout css text/css /** Container */ .ext-datamaps-container-content .ext-datamaps-container-leaflet { background: var(--wiki-content-background-color--secondary); } /** Legend */ .ext-datamaps-container .ext-datamaps-control-expandable[aria-expanded="true"] { background: color-mix(in srgb, var(--wiki-content-background-color--secondary) 95%, transparent); } .ext-datamaps-container .oo-ui-tabOptionWidget { color: var(--wiki-content-link-color); } .ext-datamaps-container .oo-ui-tabSelectWidget-frameless .oo-ui-tabOptionWidget.oo-ui-optionWidget-selected { background: var(--wiki-content-link-color); box-shadow: none; color: var(--wiki-content-link-label-color); } /** Popups */ .ext-datamaps-container .leaflet-popup-content-wrapper, .ext-datamaps-container .leaflet-popup-tip { background: var(--wiki-content-background-color--secondary); color: var(--wiki-content-text-color); } .ext-datamaps-container .ext-datamaps-popup-buttons a, .ext-datamaps-container .leaflet-popup-close-button { filter: var(--wiki-icon-general-filter); cursor: pointer; } .ext-datamaps-popup-header .ext-datamaps-popup-subtitle, .ext-datamaps-popup-header .ext-datamaps-popup-location { color: var(--wiki-content-text-mix-color); } .ext-datamaps-popup .ext-datamaps-popup-tools li a { border: 1px solid var(--wiki-content-link-color); transition: background 100ms, color 100ms; } .ext-datamaps-popup .ext-datamaps-popup-tools li a:hover { background: var(--wiki-content-link-color); color: var(--wiki-content-link-label-color); } /** Controls */ .ext-datamaps-container .leaflet-bar { background-color: var(--wiki-content-background-color--secondary); border-color: color-mix(in srgb, var(--wiki-content-link-color) 50%, transparent); } .ext-datamaps-container .leaflet-bar button:hover { background-color: color-mix(in srgb, var(--wiki-content-dynamic-color) 25%, transparent); } .ext-datamaps-container .leaflet-control { color: var(--wiki-content-text-color); } .leaflet-control-container .oo-ui-buttonElement > .oo-ui-buttonElement-button { min-height: unset; } .ext-datamaps-container .leaflet-control button { border-bottom-color: color-mix(in srgb, var(--wiki-content-link-color) 50%, transparent); color: var(--wiki-content-text-color); } /* HACK: awful selector, v1.0 will prolly use a standard class on these */ .ext-datamaps-container .ext-datamaps-control span[class^="oo-ui-icon"] { filter: var(--wiki-icon-general-filter); } /** Search */ .ext-datamaps-container .ext-datamaps-control-search ul.ext-datamaps-control-search-results { background: var(--wiki-content-background-color--secondary); } .ext-datamaps-container .ext-datamaps-control-search ul.ext-datamaps-control-search-results li:focus, .ext-datamaps-container .ext-datamaps-control-search ul.ext-datamaps-control-search-results li[data-highlighted="true"] { background: color-mix(in srgb, var(--wiki-content-link-color) 15%, transparent); color: var(--wiki-content-link-color); } .ext-datamaps-container .ext-datamaps-container-status > :not(.oo-ui-widget) { background:var(--wiki-content-background-color--secondary); color:var(--wiki-content-text-mix-color); } .ext-datamaps-container .leaflet-control-container .ext-datamaps-control-coords { background: var(--background-color-neutral-subtle); color: var(--color-base--subtle); } f3ef9024b4b537b9fa9bceff82bbbeaf0feb7f7a MediaWiki:Gadgets/mpEditLinks/main.js 8 252 276 2025-11-02T00:45:02Z ARTIFICER 564804 Importing default loadout javascript text/javascript $.when( $.ready ) .then(function(){ if(!document.getElementById('mp-container')) return; /* page is not using IMP */ if(!mw.config.get('wgIsProbablyEditable')) return; /* user does not have permission to edit the page */ var rootpage = document.getElementById('mp-container').dataset['rootpage']; // Get the rootpage passed from the main page module, so we don't need to make an API call /* generate the links here instead of in the wikitext, so that users who can't see them don't have them * in the DOM at all, and screenreaders and search engines don't get confused */ function createLinks(){ $('.mp-box').each(function(_, el){ var params = '?action=edit'; // only add the long preload stuff if the box doesn't exist, for prettier urls if ( $(el).hasClass('missing') ){ params += '&preload=Template:Main page box/preload&preloadparams[0]=' + el.dataset['boxId'].charAt(0).toUpperCase() + el.dataset['boxId'].slice(1); /* preloadparam is box id with first letter capitalized */ } $('<a></a>', {href: mw.util.getUrl(rootpage + '/' + el.dataset['boxId']) + params}) .msg('gadget-mpEditLinks-edit-link-text', rootpage + '/' + el.dataset['boxId']) .appendTo( $('<div></div>', { class: 'mp-edit-link' }).prependTo(el) ); }); } function toggleLinks(){ $('.mp-edit-link').each(function(_, el){ $(el).toggle().css('display none;'); }); } $('<span></span>', { text: mw.msg('gadget-mpEditLinks-toggle-link-text'), class: 'mp-edit-toggle', on: {click: toggleLinks}, }).appendTo($('#top')); createLinks(); }); 1d90ab83a0b7ca91992c8b4a197018d68b8e5959 MediaWiki:Gadgets/mpEditLinks/main.css 8 253 277 2025-11-02T00:45:03Z ARTIFICER 564804 Importing default loadout css text/css .mp-edit-link { display:block; position:absolute; z-index:99; right:0.5em; top:0.5em; background:var(--wiki-content-background-color); } .mp-edit-link a { display:block; padding:0.1em; border:1px solid var(--wiki-content-link-color); } .mp-edit-link a::before { display:inline-block; content:''; background-image:url("data:image/svg+xml,%3Csvg xmlns=%22http://www.w3.org/2000/svg%22 width=%2220%22 height=%2220%22 viewBox=%220 0 20 20%22%3E%3Ctitle%3E edit %3C/title%3E%3Cpath d=%22m16.77 8 1.94-2a1 1 0 0 0 0-1.41l-3.34-3.3a1 1 0 0 0-1.41 0L12 3.23zM1 14.25V19h4.75l9.96-9.96-4.75-4.75z%22/%3E%3C/svg%3E"); background-size:contain; width:1em; height:1em; filter:var(--wiki-icon-to-link-filter); vertical-align:text-top; margin-right:0.2em; } c5fd62c547dd14df99d3f223cdca962743d492d1 MediaWiki:Gadgets/ranger/main.css 8 254 278 2025-11-02T00:45:03Z ARTIFICER 564804 Importing default loadout css text/css /** as of Module:navbox version 1.2.5 **/ .ranger-navbox{ border-color: var(--navbox-outer-border-color); border-style: var(--navbox-outer-border-style); border-width: var(--navbox-outer-border-width); border-radius: var(--navbox-outer-border-radius); padding: var(--navbox-padding); font-size: var(--navbox-font-size); margin: var(--navbox-margin); background: var(--navbox-background); line-height: 1.5; clear:both; } .ranger-navbox * { border: 0; } .ranger-navbox .center *{ margin-left: unset; margin-right: unset; } .ranger-navbox, .ranger-navbox .ranger-section, .ranger-navbox .ranger-listbox{ display: flex; flex-direction: column; gap: var(--navbox-gap); } .ranger-navbox .ranger-title, .ranger-navbox .ranger-header{ text-align: center; min-height: 1.5em; position: relative; z-index: 0; font-weight: bold; } .ranger-navbox .ranger-title{ color: var(--navbox-title-color); background: var(--navbox-title-background); font-size: var(--navbox-title-font-size); padding: var(--navbox-title-padding--y) calc(1.5em + var(--navbox-icon-offset--x)); /* left and right padding equal to the size and position of the edit/collapse buttons */ } .ranger-navbox .ranger-title a, .ranger-navbox .ranger-title a:visited, .ranger-navbox .ranger-title a:hover, .ranger-navbox .ranger-title a.external, .ranger-navbox .ranger-title a.external:visited, .ranger-navbox .ranger-title a.external:hover { text-decoration: var(--navbox-title-link-decoration); } .ranger-navbox .ranger-title a.new, .ranger-navbox .ranger-title a.new:visited { text-decoration: var(--navbox-title-redlink-decoration); } .ranger-navbox .ranger-title a, .ranger-navbox .ranger-title a.external, .ranger-navbox .ranger-title a.external:visited { color: var(--navbox-title-link-color); } .ranger-navbox .ranger-title a:visited{ color: var(--navbox-title-link-color--visited); } .ranger-navbox .ranger-title a.new, .ranger-navbox .ranger-title a.new:visited{ color:var(--navbox-title-redlink-color); } .ranger-navbox .ranger-title a:hover, .ranger-navbox .ranger-title a:visited:hover, .ranger-navbox .ranger-title a.external:hover, .ranger-navbox .ranger-title a.external:visited:hover { color:var(--navbox-title-link-color--hover); } .ranger-navbox .ranger-header{ color: var(--navbox-header-color); background: var(--navbox-header-background); font-size: var(--navbox-header-font-size); padding: var(--navbox-header-padding--y) calc(1.5em + var(--navbox-icon-offset--x)); /* left and right padding equal to the size and position of the edit/collapse buttons */ } .ranger-navbox .ranger-sublist .ranger-header{ font-size: var(--navbox-subheader-font-size); padding: var(--navbox-subheader-padding--y) calc(1.5em + var(--navbox-icon-offset--x)); /* left and right padding equal to the size and position of the edit/collapse buttons */ } .ranger-navbox .ranger-header a, .ranger-navbox .ranger-header a:visited, .ranger-navbox .ranger-header a:hover, .ranger-navbox .ranger-header a.external, .ranger-navbox .ranger-header a.external:visited, .ranger-navbox .ranger-header a.external:hover { text-decoration: var(--navbox-header-link-decoration); } .ranger-navbox .ranger-header a.new, .ranger-navbox .ranger-header a.new:visited { text-decoration: var(--navbox-header-redlink-decoration); } .ranger-navbox .ranger-header a, .ranger-navbox .ranger-header a.external, .ranger-navbox .ranger-header a.external:visited { color: var(--navbox-header-link-color); } .ranger-navbox .ranger-header a:visited{ color: var(--navbox-header-link-color--visited); } .ranger-navbox .ranger-header a.new, .ranger-navbox .ranger-header a.new:visited{ color:var(--navbox-header-redlink-color); } .ranger-navbox .ranger-header a:hover, .ranger-navbox .ranger-header a:visited:hover, .ranger-navbox .ranger-header a.external:hover, .ranger-navbox .ranger-header a.external:visited:hover { color:var(--navbox-header-link-color--hover); } .ranger-navbox .ranger-meta{ font-size: var(--navbox-title-font-size); position: absolute; left: var(--navbox-icon-offset--x); top: calc(var(--navbox-title-padding--y) + 0.08em); /* 0.08em: vertial offset tweak based on the icon graph */ display: block; } .ranger-navbox .ranger-meta .nv{ --mask: var(--icon-metalinks); display: block; width: 0.84em; /* based on the icon graph */ height: 0.84em; -webkit-mask: var(--mask); mask: var(--mask); -webkit-mask-size: 100% 100%; mask-size: 100% 100%; -webkit-mask-position: center center; mask-position: center center; background-color: var(--navbox-title-icon-color); } .ranger-navbox .ranger-meta .nv > a{ display: block; width: 100%; height: 100%; opacity: 0; } .ranger-navbox .ranger-meta .nv > a > span{ display: block; width: 100%; height: 100%; overflow: hidden; } .ranger-navbox .ranger-meta:has(.mw-selflink){ display: none; } .ranger-navbox, .ranger-navbox .ranger-section{ position: relative; } .ranger .mw-collapsible-toggle-placeholder{ display: none; } .ranger-navbox .ranger-title > .ranger-title-text, .ranger-navbox .ranger-header > .ranger-header-text{ pointer-events: none; } .ranger-navbox .ranger-title > .ranger-title-text a, .ranger-navbox .ranger-header > .ranger-header-text a{ pointer-events: auto; } .ranger-navbox .ranger-title > .mw-collapsible-toggle, .ranger-navbox .ranger-header > .mw-collapsible-toggle{ --mask: var(--icon-chevron-down); position: absolute; right: 0; top: 0; z-index: -1; display: block; width: 100%; height: 100%; overflow:hidden; } .ranger-navbox.small-collapsible-toggle-click-area .ranger-title > .mw-collapsible-toggle, .ranger-navbox.small-collapsible-toggle-click-area .ranger-header > .mw-collapsible-toggle{ width: 1.5em; height: 1.5em; right: var(--navbox-icon-offset--x); } .ranger-navbox.small-collapsible-toggle-click-area .ranger-title > .mw-collapsible-toggle{ top: var(--navbox-title-padding--y); } .ranger-navbox.small-collapsible-toggle-click-area .ranger-header > .mw-collapsible-toggle{ top: var(--navbox-header-padding--y); } .ranger-navbox.small-collapsible-toggle-click-area .ranger-sublist .ranger-header > .mw-collapsible-toggle{ top: var(--navbox-subheader-padding--y); } .ranger-navbox .ranger-title > .mw-collapsible-toggle::before, .ranger-navbox .ranger-header > .mw-collapsible-toggle::before{ content: ""; display: block; width: 1.5em; height: 1.5em; position: absolute; right: var(--navbox-icon-offset--x); -webkit-mask: var(--mask); mask: var(--mask); -webkit-mask-size: 100% 100%; mask-size: 100% 100%; -webkit-mask-position: center center; mask-position: center center; background-color: var(--navbox-title-icon-color); transform: scaleY(-1); } .ranger-navbox .ranger-title > .mw-collapsible-toggle::before{ top: var(--navbox-title-padding--y); } .ranger-navbox .ranger-header > .mw-collapsible-toggle::before{ top: var(--navbox-header-padding--y); } .ranger-navbox .ranger-sublist .ranger-header > .mw-collapsible-toggle::before{ top: var(--navbox-subheader-padding--y); } .ranger-navbox.small-collapsible-toggle-click-area .ranger-title > .mw-collapsible-toggle::before, .ranger-navbox.small-collapsible-toggle-click-area .ranger-header > .mw-collapsible-toggle::before{ top: 0; right: 0; } .ranger-navbox .ranger-header > .mw-collapsible-toggle::before{ background-color: var(--navbox-header-icon-color); } .ranger-navbox .ranger-title > .mw-collapsible-toggle.mw-collapsible-toggle-collapsed::before, .ranger-navbox .ranger-header > .mw-collapsible-toggle.mw-collapsible-toggle-collapsed::before{ transform: none; } .ranger-navbox .ranger-title > .mw-collapsible-toggle *, .ranger-navbox .ranger-title > .mw-collapsible-toggle::after, .ranger-navbox .ranger-header > .mw-collapsible-toggle *, .ranger-navbox .ranger-header > .mw-collapsible-toggle::after{ display: none; } .ranger-navbox .ranger-list{ width: unset; padding: var(--navbox-list-padding); } .ranger-navbox .ranger-above{ background: var(--navbox-above-background); color: var(--navbox-above-color); padding: var(--navbox-above-padding); width: unset; } .ranger-navbox .ranger-below{ background: var(--navbox-below-background); color: var(--navbox-below-color); padding: var(--navbox-below-padding); width: unset; } .ranger-navbox .ranger-sublist{ display: flex; flex-direction: column; gap: var(--navbox-gap); } .ranger-navbox .ranger-section-body{ display: grid; gap: var(--navbox-gap); grid-template-columns: auto minmax(0,1fr); } /* gap fix for collapsed content */ .ranger-navbox [class^="ranger-"][hidden="until-found"]{ margin-top: calc(0px - var(--navbox-gap)) !important; } .ranger-navbox .ranger-row{ display: contents; } .ranger-navbox .ranger-group, .ranger-navbox .ranger-subgroup{ text-align: var(--navbox-group-text-align); font-weight: bold; background: var(--navbox-group-background); color: var(--navbox-group-color); padding: var(--navbox-group-padding); width: unset; } /* for desktop view */ .ranger-navbox.group-align-left .ranger-group, .ranger-navbox.group-align-left .ranger-subgroup{ --navbox-group-text-align: left; } .ranger-navbox.group-align-center .ranger-group, .ranger-navbox.group-align-center .ranger-subgroup{ --navbox-group-text-align: center; } .ranger-navbox.group-align-right .ranger-group, .ranger-navbox.group-align-right .ranger-subgroup{ --navbox-group-text-align: right; } /* for mobile view */ .ranger-navbox.mobile-group-align-left .ranger-group, .ranger-navbox.mobile-group-align-left .ranger-subgroup{ --navbox-group-text-align--mobile: left; } .ranger-navbox.mobile-group-align-center .ranger-group, .ranger-navbox.mobile-group-align-center .ranger-subgroup{ --navbox-group-text-align--mobile: center; } .ranger-navbox.mobile-group-align-right .ranger-group, .ranger-navbox.mobile-group-align-right .ranger-subgroup{ --navbox-group-text-align--mobile: right; } /* for desktop view */ .ranger-navbox.list-align-left .ranger-listbox{ --navbox-list-text-align: left; } .ranger-navbox.list-align-center .ranger-listbox{ --navbox-list-text-align: center; } .ranger-navbox.list-align-right .ranger-listbox{ --navbox-list-text-align: right; } /* for mobile view */ .ranger-navbox.mobile-list-align-left .ranger-listbox{ --navbox-list-text-align--mobile: left; } .ranger-navbox.mobile-list-align-center .ranger-listbox{ --navbox-list-text-align--mobile: center; } .ranger-navbox.mobile-list-align-right .ranger-listbox{ --navbox-list-text-align--mobile: right; } .ranger-navbox .ranger-listbox > .ranger-wrap{ text-align: var(--navbox-list-text-align); background: var(--navbox-list-background); color: var(--navbox-list-color); flex-grow: 1; } .ranger-navbox .ranger-sublist{ flex-grow: var(--count); } .ranger-navbox .ranger-listbox:first-child{ /* A list-n without group-n */ grid-column-end: span 2; } .ranger-navbox .ranger-group, .ranger-navbox .ranger-subgroup, .ranger-navbox .ranger-listbox > .ranger-wrap{ display: grid; justify-items: stretch; align-items: center; } .ranger-navbox.striped-even .ranger-even, .ranger-navbox.striped-odd .ranger-odd{ background: var(--navbox-list-background--striped); } /* make links use full line height (larger click box)*/ .ranger-navbox .hlist a{ display: inline-block; } .ranger-navbox .align-left, .ranger-navbox .alignleft{ text-align: left; } .ranger-navbox .align-center, .ranger-navbox .aligncenter{ text-align: center; } .ranger-navbox .align-right, .ranger-navbox .alignright{ text-align: right; } /* responsive */ @media screen and (max-width: 720px) { .ranger-navbox .ranger-section-body, .ranger-navbox .ranger-sublist { display: flex; flex-flow: column; } .ranger-navbox .ranger-row{ display: block; } .ranger-navbox .ranger-group + .ranger-listbox > .ranger-sublist:first-child, .ranger-navbox .ranger-subgroup + .ranger-listbox > .ranger-sublist:first-child{ margin-top: var(--navbox-gap); } .ranger-navbox .ranger-listbox.empty{ display: none; } .ranger-navbox .ranger-group, .ranger-navbox .ranger-subgroup{ text-align: var(--navbox-group-text-align--mobile, left); max-width: unset !important; } .ranger-navbox .ranger-group > *, .ranger-navbox .ranger-subgroup > *{ max-width: unset !important; } .ranger-navbox .ranger-sublist { padding-left: var(--navbox-tree-indent); margin-left: var(--navbox-tree-line-indent); } .ranger-navbox .ranger-subgroup, .ranger-navbox .ranger-listbox { position:relative; } .ranger-navbox .ranger-group br, .ranger-navbox .ranger-subgroup br{ display: none; } .ranger-navbox .ranger-listbox > .ranger-wrap{ text-align: var(--navbox-list-text-align--mobile, left); } .ranger-navbox .ranger-sublist > .ranger-section > .ranger-header{ margin-left: calc( 0px - var(--navbox-tree-indent) - var(--navbox-tree-line-indent)); } .ranger-navbox .ranger-sublist .ranger-row > ::before{ position: absolute; left: calc(0px - var(--navbox-tree-indent)); top: 0; width: var(--navbox-tree-line-width); height: 100%; content: ''; display: block; background-color: var(--navbox-tree-line-color); } .ranger-navbox .ranger-sublist .ranger-row > .ranger-listbox::before, .ranger-navbox .ranger-row.empty-list > .ranger-subgroup::before{ height: calc(100% + var(--navbox-gap)); } .ranger-navbox .ranger-sublist .ranger-row:last-child > ::before { display: none; } .ranger-navbox .ranger-sublist .ranger-row:last-child > :first-child::before { display: block; height: calc(50% + var(--navbox-tree-line-width)/2); } .ranger-navbox .ranger-subgroup::after, .ranger-navbox .ranger-row .ranger-row.empty-group > .ranger-listbox > .ranger-wrap::after{ position: absolute; left: calc(0px - var(--navbox-tree-indent) + var(--navbox-tree-line-width)); width: calc(var(--navbox-tree-indent) - var(--navbox-tree-line-spacing) - var(--navbox-tree-line-width)); height: var(--navbox-tree-line-width); content: ''; background-color: var(--navbox-tree-line-color); } /* increase height for links */ .ranger-navbox .hlist{ line-height: 2; } } /**** `.pill` class: the "pill" style ****/ /* remove middle dots betweem items */ .ranger-navbox.pill .hlist dd:not(:last-child)::after, .ranger-navbox.pill .hlist li:not(:last-child)::after{ display: none; } /* remove parentheses around nested lists*/ .ranger-navbox.pill .hlist dd ol::before, .ranger-navbox.pill .hlist dd ul::before, .ranger-navbox.pill .hlist dd dl::before, .ranger-navbox.pill .hlist dt ol::before, .ranger-navbox.pill .hlist dt ul::before, .ranger-navbox.pill .hlist dt dl::before, .ranger-navbox.pill .hlist li ol::before, .ranger-navbox.pill .hlist li ul::before, .ranger-navbox.pill .hlist li dl::before, .ranger-navbox.pill .hlist dd ol::after, .ranger-navbox.pill .hlist dd ul::after, .ranger-navbox.pill .hlist dd dl::after, .ranger-navbox.pill .hlist dt ol::after, .ranger-navbox.pill .hlist dt ul::after, .ranger-navbox.pill .hlist dt dl::after, .ranger-navbox.pill .hlist li ol::after, .ranger-navbox.pill .hlist li ul::after, .ranger-navbox.pill .hlist li dl::after { display: none; } /* make lists inline-flex */ .ranger-navbox.pill .hlist ul, .ranger-navbox.pill .hlist ol, .ranger-navbox.pill .hlist dl{ display: inline-flex; gap: var(--navbox-pill-gap); flex-wrap: wrap; } /* "pill" style for items */ .ranger-navbox.pill .hlist li, .ranger-navbox.pill .hlist dt, .ranger-navbox.pill .hlist dd{ padding: var(--navbox-pill-padding); border-radius: var(--navbox-pill-border-radius); box-shadow: var(--navbox-pill-box-shadow); background: var(--navbox-pill-background); /* 100% height */ display: flex; align-items: center; /* for nested lists */ gap: var(--navbox-pill-gap); flex-wrap: wrap; } /* Add a hover / focus feedback style */ .ranger-navbox.pill .hlist dd:hover, .ranger-navbox.pill .hlist dd:focus, .ranger-navbox.pill .hlist dt:hover, .ranger-navbox.pill .hlist dt:focus, .ranger-navbox.pill .hlist li:hover, .ranger-navbox.pill .hlist li:focus { box-shadow: var(--navbox-pill-box-shadow--hover); background: var(--navbox-pill-background--hover); } /* pill with selflink * * Only select the deepest level for nested lists. * We have to use :has() to pick pills with selflink and * all browsers which support :has() should also support :is() and :not(), * therefore we can use :is() and :not() here safely. */ .ranger-navbox.pill .hlist .ranger-list :is(li,dt,dd):has(.mw-selflink):not(:has(li, dt, dd)){ background: var(--navbox-pill-selflink-background); } /**** `.pill-mobile` class: only apply the "pill" style on mobile ****/ @media screen and (max-width: 720px) { /* remove middle dots betweem items */ .ranger-navbox.pill-mobile .hlist dd:not(:last-child)::after, .ranger-navbox.pill-mobile .hlist li:not(:last-child)::after{ display: none; } /* remove parentheses around nested lists*/ .ranger-navbox.pill-mobile .hlist dd ol::before, .ranger-navbox.pill-mobile .hlist dd ul::before, .ranger-navbox.pill-mobile .hlist dd dl::before, .ranger-navbox.pill-mobile .hlist dt ol::before, .ranger-navbox.pill-mobile .hlist dt ul::before, .ranger-navbox.pill-mobile .hlist dt dl::before, .ranger-navbox.pill-mobile .hlist li ol::before, .ranger-navbox.pill-mobile .hlist li ul::before, .ranger-navbox.pill-mobile .hlist li dl::before, .ranger-navbox.pill-mobile .hlist dd ol::after, .ranger-navbox.pill-mobile .hlist dd ul::after, .ranger-navbox.pill-mobile .hlist dd dl::after, .ranger-navbox.pill-mobile .hlist dt ol::after, .ranger-navbox.pill-mobile .hlist dt ul::after, .ranger-navbox.pill-mobile .hlist dt dl::after, .ranger-navbox.pill-mobile .hlist li ol::after, .ranger-navbox.pill-mobile .hlist li ul::after, .ranger-navbox.pill-mobile .hlist li dl::after { display: none; } /* make lists inline-flex */ .ranger-navbox.pill-mobile .hlist ul, .ranger-navbox.pill-mobile .hlist ol, .ranger-navbox.pill-mobile .hlist dl{ display: inline-flex; gap: var(--navbox-pill-gap); flex-wrap: wrap; } /* "pill" style for items */ .ranger-navbox.pill-mobile .hlist li, .ranger-navbox.pill-mobile .hlist dt, .ranger-navbox.pill-mobile .hlist dd{ /* 100% height */ display: flex; align-items: center; /* for nested lists */ gap: var(--navbox-pill-gap); flex-wrap: wrap; } /* "pill" style for items */ .ranger-navbox.pill-mobile .hlist li, .ranger-navbox.pill-mobile .hlist dt, .ranger-navbox.pill-mobile .hlist dd{ padding: var(--navbox-pill-padding); border-radius: var(--navbox-pill-border-radius); box-shadow: var(--navbox-pill-box-shadow); background: var(--navbox-pill-background); /* 100% height */ display: flex; align-items: center; /* for nested lists */ gap: var(--navbox-pill-gap); flex-wrap: wrap; } /* Add a hover / focus feedback style */ .ranger-navbox.pill-mobile .hlist dd:hover, .ranger-navbox.pill-mobile .hlist dd:focus, .ranger-navbox.pill-mobile .hlist dt:hover, .ranger-navbox.pill-mobile .hlist dt:focus, .ranger-navbox.pill-mobile .hlist li:hover, .ranger-navbox.pill-mobile .hlist li:focus { box-shadow: var(--navbox-pill-box-shadow--hover); background: var(--navbox-pill-background--hover); } /* pill with selflink * * Only select the deepest level for nested lists. * We have to use :has() to pick pills with selflink and * all browsers which support :has() should also support :is() and :not(), * therefore we can use :is() and :not() here safely. */ .ranger-navbox.pill-mobile .hlist .ranger-list :is(li,dt,dd):has(.mw-selflink):not(:has(li, dt, dd)){ background: var(--navbox-pill-selflink-background); } } /********************* * End Template:Navbox* **********************/ ae47934e9fa84b08bcf3da9408cfb9a9d7b105c1 MediaWiki:Gadgets/ranger 8 255 279 2025-11-02T00:45:03Z ARTIFICER 564804 Importing default loadout GadgetDefinition application/json { "settings": { "section": "", "package": false, "default": true, "hidden": true, "supportsUrlLoad": false }, "loadConditions": { "actions": [], "categories": [ "Pages with navboxes" ], "namespaces": [], "contentModels": [], "rights": [] }, "module": { "pages": [ "variables.css", "main.css", "custom.css" ], "dependencies": [], "type": "styles" } } 0e59fa9520b52214b9fedaecae9f41d86afd197f MediaWiki:Gadgets/druid 8 256 280 2025-11-02T00:45:04Z ARTIFICER 564804 Importing default loadout GadgetDefinition application/json { "settings": { "package": false, "section": "", "default": true, "hidden": true, "supportsUrlLoad": false }, "loadConditions": { "actions": [], "categories": [ "Pages with DRUID infoboxes" ], "namespaces": [], "contentModels": [], "rights": [] }, "module": { "pages": [ "variablesEditMe.css", "mainReadonly.css", "customEditMe.css" ], "dependencies": [], "type": "styles" } } 5c21b27bf41aba17b090e0d888010c308bd5d0bb MediaWiki:Gadgets/druid/mainReadonly.css 8 257 281 2025-11-02T00:45:04Z ARTIFICER 564804 Importing default loadout css text/css /* --------------------------------------------- */ /* Do not edit this file please */ /* You can edit variablesEditMe and customEditMe */ /* --------------------------------------------- */ .druid-container { border: 4px solid var(--druid-border-color); border-radius: 3px; background: var(--druid-background-color); float: right; clear: right; margin: 0 0 1em 1em; width:100%; max-width:22em; box-sizing: border-box; border-collapse: collapse; } @media screen and (max-width: 720px) { .druid-container { float: none; margin: 0.5rem auto; } } .druid-main-images-file, .druid-main-image { text-align:center; } .druid-infobox .druid-title, .druid-infobox .druid-section { background:var(--druid-secondary-background-color); /* fallback */ background:color-mix(in srgb, var(--druid-secondary-background-color) 75%, transparent); color:var(--druid-secondary-background-label-color); text-align:center; font-size:1.5em; padding:1px; } .druid-infobox .druid-section { font-size: 1.25em; font-weight: 500; } .druid-infobox .druid-collapsible .druid-section { flex-grow: 1; } .druid-label { font-weight:bold; text-align: right; box-sizing: border-box; } .druid-row > .druid-label { width: 48%; flex-shrink: 0; } .druid-row > .druid-label, .druid-row > .druid-data { padding-inline: 0.3em; } .druid-main-image, .druid-main-images { padding:5px; } .druid-main-image img, .druid-main-images img { max-width:100%; height:auto; } .druid-main-images-labels { display:flex; flex-direction:row; flex-wrap:wrap; justify-content: space-evenly; margin:0.25em; gap:0.25em; } .druid-main-images-label { cursor:pointer; flex:1 1 auto; text-align:center; transition:.1s ease-in; outline:1px solid var(--druid-link-color); } .druid-main-images-label.focused { background:var(--druid-link-color); color:var(--druid-link-label-color); } .druid-main-images-label:not(.focused):hover { background:var(--druid-link-color); /* fallback */ background:color-mix(in srgb, var(--druid-link-color) 25%, transparent); } .druid-toggleable-data:not(.focused), .druid-main-images-file:not(.focused), .druid-toggleable-heading:not(.focused), .druid-row:not(:has(.druid-grid)):has(.druid-toggleable-data-empty.focused), .druid-grid-item:has(.druid-toggleable-data-empty.focused), .druid-section:has(.druid-toggleable-heading-empty.focused), .druid-section-container:has(.druid-toggleable-data-empty.focused):not(:has(.druid-toggleable-data-nonempty.focused)):not(:has(.druid-data-nonempty)) { display:none; } .druid-grid { display:grid; gap: 0.3em; padding: 0.35em; } .druid-grid-item { background:var(--druid-tertiary-background-color); padding:0.25em; border:1px solid var(--druid-border-color); /* fallback */ border:1px solid color-mix(in srgb, var(--druid-border-color) 50%, transparent); border-radius: 2px; } .druid-grid-item .druid-label, .druid-grid-item .druid-data { text-align: center; } .druid-data-wide { width:100%; } .druid-section-container > .druid-collapsible { display: flex; justify-content: space-between; align-items: center; } .druid-collapsed { display:none !important; } .druid-collapsible { cursor:pointer; position:relative; } .druid-collapsible::after { content: ""; display: block; position: absolute; right: 10px; width: 20px; height: 20px; --mask: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='20' height='20' viewBox='0 0 20 20'%3E%3Ctitle%3E collapse %3C/title%3E%3Cpath d='M1 13.75l1.5 1.5 7.5-7.5 7.5 7.5 1.5-1.5-9-9-9 9z'/%3E%3C/svg%3E") no-repeat; -webkit-mask: var(--mask); mask: var(--mask); -webkit-mask-size: 100% 100%; mask-size: 100% 100%; -webkit-mask-position: center center; mask-position: center center; background-color: var(--druid-secondary-background-label-color); } .druid-collapsible-collapsed::after { transform: rotate(180deg); } /***************************************** Div support *****************************************/ div.druid-row { display:flex; margin-block: 1px; } div.druid-row + div.druid-row { margin-top: 0; } div.druid-row > .druid-label { background: var(--druid-tertiary-background-color); } .druid-infobox .druid-title { font-weight: 700; } .druid-infobox #toc { display:none; } /******** Custom display classes *********/ div.druid-stacked.druid-row, .druid-stacked div.druid-row { flex-direction: column; } .druid-stacked.druid-row > .druid-label, .druid-stacked .druid-row > .druid-label { text-align: left; width: 100%; flex-basis:unset; } .druid-stacked.druid-row > .druid-data, .druid-stacked .druid-row > .druid-data { padding-left: .75em; } /* --------------------------------------------- */ /* Do not edit this file please */ /* You can edit variablesEditMe and customEditMe */ /* --------------------------------------------- */ b012f61bd994e50b85508138467794f6a296ed2d MediaWiki:Gadgets/druid/variablesEditMe.css 8 258 282 2025-11-02T00:45:05Z ARTIFICER 564804 Importing default loadout css text/css /* These variables are designed to inherit from your wiki's color variables. If your wiki uses a different naming scheme, change the inner names to match yours. If your wiki doesn't use color variables you should consider doing so, otherwise you can replace the inner variables or the fallback values with colors that match your wiki. */ /* Light and dark are separated to make it easier for you to do local customizations but in the default version they are identical */ :root, .view-light .druid-container { --druid-background-color: var(--wiki-content-background-color, #ffffff); --druid-secondary-background-color: var(--wiki-accent-color, #36c); --druid-secondary-background-label-color: var(--wiki-accent-label-color, #fff); --druid-tertiary-background-color: var(--wiki-content-background-color--secondary, #eaecf0); --druid-border-color: var(--wiki-content-border-color, #a7d7f9); --druid-link-color: var(--wiki-content-link-color, #0645ad); --druid-link-label-color: var(--wiki-content-link-label-color, #fff); } .view-dark .druid-container { --druid-background-color: var(--wiki-content-background-color, #101418); --druid-secondary-background-color: var(--wiki-accent-color, #36c); --druid-secondary-background-label-color: var(--wiki-accent-label-color, #fff); --druid-tertiary-background-color: var(--wiki-content-background-color--secondary, #202122); --druid-border-color: var(--wiki-content-border-color, #72777d); --druid-link-color: var(--wiki-content-link-color, #6d8afb); --druid-link-label-color: var(--wiki-content-link-label-color, #000); } 8fbdba8a0bd21c0bc819a404a5bec10170782fc2 MediaWiki:Gadgets/druid/customEditMe.css 8 259 283 2025-11-02T00:45:05Z ARTIFICER 564804 Importing default loadout css text/css /* Custom DRUID styles should go here */ 7ecb3c635f03ba714e419c200113f47043f0e358 MediaWiki:Gadgets/druid/doc 8 260 284 2025-11-02T00:45:05Z ARTIFICER 564804 Importing default loadout wikitext text/x-wiki <includeonly>This gadget provides styles for {{ml|Infobox}}. You can customize: * [[MediaWiki:Gadgets/druid/variablesEditMe.css]] - to customize the built-in variables (e.g. if you want to make the color of your infobox not match the wiki accent color). This file will load '''first''' out of all of the DRUID CSS files. * [[MediaWiki:Gadgets/druid/customEditMe.css]] - to otherwise customize DRUID (e.g. if you want to change the padding, or add a border image, something that's not supported through variables. This file will load '''last''' out of all of the DRUID CSS files, so all rules here will overwrite rules in [[MediaWiki:Gadgets/druid/mainReadonly.css]] with equal specificity. Please do NOT modify [[MediaWiki:Gadgets/druid/mainReadonly.css]]!! That page may be updated by wiki.gg staff via script, and the updates will not function if you modify it. More documentation can be found at [[support:DRUID infoboxes|DRUID infoboxes]]<!-- --></includeonly><noinclude>This is the documentation page for [[{{#titleparts:{{FULLPAGENAME}}|-1}}]].</noinclude> 2813eb77787e37161b0ed7e4e85c9f5f2d7ad92e MediaWiki:Newarticletext 8 261 285 2025-11-02T00:45:06Z ARTIFICER 564804 Importing default loadout wikitext text/x-wiki You have followed a link to a page that does not exist yet. To create the page, start typing in the box below (see the [$1 help page] for more info). If you are here by mistake, click your browser's <strong>back</strong> button. 778f9ef242eb3058ef30ed3325b901adb762a2af MediaWiki:Gadgets 8 262 286 2025-11-02T00:45:06Z ARTIFICER 564804 Importing default loadout wikitext text/x-wiki See also: [[Special:Gadgets]] for a list of all installed gadgets, formatted in a friendly way. {{Special:PrefixIndex/MediaWiki:Gadgets}} 14815d26ea4ae878b5e77e1781eeb35cd742ad2c MediaWiki:Gadgets/druidScripts 8 263 287 2025-11-02T00:45:07Z ARTIFICER 564804 Importing default loadout GadgetDefinition application/json { "settings": { "section": "", "default": true, "hidden": true, "supportsUrlLoad": false }, "loadConditions": { "actions": [], "categories": [ "Pages with DRUID infoboxes" ], "namespaces": [], "contentModels": [], "rights": [] }, "module": { "pages": [ "main.js" ], "dependencies": [ "jquery" ], "type": "general" } } 5df47905f5c565c4a5c0da774413a6dee76eb7d1 MediaWiki:Gadgets/druidScripts/main.js 8 264 288 2025-11-02T00:45:07Z ARTIFICER 564804 Importing default loadout javascript text/javascript mw.hook( 'wikipage.content' ).add( () => { $( '.druid-title-tab' ).off( 'click' ) .on( 'click', function () { const $parent = $( this ).closest( '.druid-container' ); $parent.find( '.druid-toggleable' ).removeClass( 'focused' ); const i = $( this ).attr( 'data-druid' ); $parent.find( `.druid-toggleable[data-druid="${i}"]` ).addClass( 'focused' ); } ); $( '.druid-section-tab' ).off( 'click' ) .on( 'click', function () { const $parent = $( this ).closest( '.druid-section-container' ); $parent.find( '.druid-toggleable' ).removeClass( 'focused' ); const i = $( this ).attr( 'data-druid' ); $parent.find( `.druid-toggleable[data-druid="${i}"]` ).addClass( 'focused' ); } ); $( '.druid-collapsible' ).off( 'click' ) .on( 'click', function () { const kind = $( this ).attr( 'data-druid-section' ); $( this ) .toggleClass( 'druid-collapsible-collapsed' ) .closest( '.druid-container' ) .find( `[data-druid-section-row="${kind}"]` ) .toggleClass( 'druid-collapsed' ); } ); } ); /* End DRUID */ af8f73fc414f3fc0dae8d97a044675e9912fa457 MediaWiki:Gadgets/discordTemplate 8 265 289 2025-11-02T00:45:07Z ARTIFICER 564804 Importing default loadout GadgetDefinition application/json { "settings": { "section": "", "package": true, "default": true, "hidden": true, "supportsUrlLoad": false }, "loadConditions": { "actions": [], "categories": [ "Pages with Discord embeds" ], "namespaces": [], "contentModels": [], "rights": [] }, "module": { "pages": [ "main.js" ], "dependencies": [ "jquery" ], "type": "general" } } 1232b7fbe2ff589295233393f6f387cf52793a2a MediaWiki:Gadgets/discordTemplate/main.js 8 266 290 2025-11-02T00:45:08Z ARTIFICER 564804 Importing default loadout javascript text/javascript /** * DiscordCompact.js * ---------------------- * A very simple script to display a Discord widget. * Version 0.0.2 * https://support.wiki.gg/wiki/DiscordCompact * ---------------------- */ $(function() { var widget = $("#content #discord-compact-widget"); // Bail out if we didn't find a widget. if (!widget.length) return; var id = widget.attr("data-id"); // Ensure that the id is not blank. if (id === "") throw new Error("DiscordCompact has a blank server id!"); // Ensure that the id consists only of numbers and is at least 17 characters long. if (!new RegExp("^[0-9]{17}[0-9]+$").test(id)) throw new Error("DiscordCompact has an invalid server id!"); var apiBase = "https://discord.com/api/guilds/" + id; // Get some information about the server, such as online member count and invite url. // This also tells us if the server exists or has widgets disabled, so we look out for that too. $.ajax(apiBase + "/widget.json").fail(function(req){ if (!req.responseJSON) throw new Error("DiscordCompact encountered an unknown error whilst fetching widget.json (status: " + req.status); switch (req.responseJSON.code) { case 10004: throw new Error("DiscordCompact has a valid server id, but no such server exists!"); case 50004: throw new Error("DiscordCompact has a valid server id, but that server has widgets disabled!"); default: throw new Error("DiscordCompact encountered an unknown error whilst fetching widget.json (status: " + req.status + "; code: " + req.responseJSON.code + ")"); } }).done(function(res){ const inviteURL = res.instant_invite; // Warn if we can't get an invite URL. if (inviteURL == null) console.warn("DiscordCompact cannot get an invite URL; does this server have an invite channel set in Widget settings?"); // Now get the widget image. $.ajax({url: apiBase + "/widget.png?style=banner2", xhrFields: {responseType: "blob"}}).fail(function(req){ if (!req.responseJSON) throw new Error("DiscordCompact encountered an unknown error whilst fetching widget.png! (status: " + req.status); throw new Error("DiscordCompact encountered an unknown error whilst fetching widget.png! (status: " + req.status + "; code: " + req.responseJSON.code + ")"); }).done(function(blob){ // Convert the image data into base64. This prevents us having to make the client request it a second time. const imageReader = new FileReader(); imageReader.readAsDataURL(blob); imageReader.onloadend = function() { const b64Data = imageReader.result; // Replace the widget with an <a> tag widget.replaceWith(function() { return $("<a>", { id: widget.attr("id"), class: widget.attr("class"), style: widget.attr("style"), alt: "Discord server widget", href: inviteURL }); }); // We need to grab the widget again to update it. widget = $("#discord-compact-widget"); // Setup the CSS so that the image is displayed. widget.css("display", "block"); widget.css("max-height", "76px"); widget.css("max-width", "320px"); // Create the image. const widgetImage = document.createElement("img"); widgetImage.src = b64Data; widgetImage.style.width = "100%"; widgetImage.style.height = "100%"; widgetImage.style.borderRadius = "5px"; widget.append(widgetImage); // Prevent image dragging. widget.on("dragstart", function(e) { e.preventDefault(); }); // We're done here. console.log("DiscordCompact loaded successfully!"); } }); }); }); /** * based on https://dev.fandom.com/wiki/MediaWiki:DiscordIntegrator/code.js * * used by other wikis. */ $(function() { 'use strict'; var mconfig = mw.config.get([ 'wgContentLanguage', 'wgUserLanguage', 'wgUserName' ]); if (window.DiscordIntegratorLoaded) { return; } window.DiscordIntegratorLoaded = true; /** * Main object * @static */ var DiscordIntegrator = { /** * Initializing */ init: function() { mw.hook('wikipage.content').add($.proxy(this.insertToContent, this)); }, /** * Finding the designated places in content * in which to place the widget and placing it */ insertToContent: function($content) { $content.find('.DiscordIntegrator:not(.loaded)').each($.proxy(function(cabbage, el) { el = $(el); el.html(this.generateContent(el.data())).addClass('loaded'); }, this)); }, /** * Determines the theme of the widget. * @param {string} config Configured theme * @return {string} 'light' or 'dark' depending on the wiki theme and configuration */ determineTheme: function(config) { // If explicitly configured to light or dark. if (config === 'dark') { return 'dark'; } if (config === 'light') { return 'light'; } /** If not configured **/ // try to determine based on wiki theme (set by themeToggle): var clas = $(':root').attr('class'); var regex = /(^|\s)theme-(\w+)(\s|$)/; var match = clas.match(regex); if(match){ var wikiThemeName = match[2]; if(typeof(config) === 'object' && config !== null){ //with json theme config if(config[wikiThemeName]){ return config[wikiThemeName]; } } if(wikiThemeName === 'light'){ return 'light'; } if(wikiThemeName === 'dark'){ return 'dark'; } } // Otherwise, default to dark. return 'dark'; }, /** * Generating widget content from an object * @return {string} Content of the widget */ generateContent: function(config) { if (!config.id || !String(config.id).match(/\d{17,19}/)) { return "Error: ID of the widget is malformed or not supplied, please see <a href='https://support.wiki.gg/wiki/DiscordWidget' title='the instructions'>the instructions</a> for how to find your server's ID. Please make sure you are not inserting <strong>the DiscordIntegrator template</strong> when asked for <strong>your widget ID</strong>."; } if ( ( config.loggedIn === true || Boolean(config['logged-in']) === true && config['logged-in'] !== 'false' && config['logged-in'] !== '{{{loggedIn}}}' ) && !mconfig.wgUserName ) { return "Please <a href='/Special:UserLogin' title='log in'>log in</a> to see this widget."; } var username = config.username === '@disabled' ? '' : config.username === '@function' && typeof window.DiscordIntegratorGetUsername === 'function' ? window.DiscordIntegratorGetUsername() : config.username || mconfig.wgUserName; return mw.html.element('iframe', { src: 'https://discord.com/widget?id=' + config.id + '&theme=' + this.determineTheme(config.theme) + '&username=' + encodeURIComponent(username), width: config.width || '100%', height: config.height || '400px', allowtransparency: 'true', frameborder: '0', title: "Discord server widget" }); } }; DiscordIntegrator.init(); }); 1e1fd5704120cf67e15a757bd964c7295bdb464e MediaWiki:Gadgets/luaImportLinks 8 267 291 2025-11-02T00:45:08Z ARTIFICER 564804 Importing default loadout GadgetDefinition application/json { "settings": { "section": "", "package": true, "default": true, "hidden": true, "supportsUrlLoad": false }, "loadConditions": { "actions": [], "categories": [], "namespaces": [ 828 ], "contentModels": [], "rights": [] }, "module": { "pages": [ "main.js" ], "dependencies": [ "jquery" ], "type": "general" } } e5843d78effc2d04aa1fde18970885a1845ae525 MediaWiki:Gadgets/luaImportLinks/main.js 8 268 292 2025-11-02T00:45:09Z ARTIFICER 564804 Importing default loadout javascript text/javascript /* Link to imported modules from Lua code */ $(function() { var config = mw.config.get([ 'wgCanonicalNamespace', 'wgFormattedNamespaces' ]); if (config.wgCanonicalNamespace !== 'Module') { return; } var localizedNamespace = config.wgFormattedNamespaces[828]; $('.s1, .s2, .s').each(function() { var $this = $(this); var html = $this.html(); var quote = html[0]; var isLongStringQuote = quote === '['; var quoteRE = new RegExp('^\\' + quote + '|\\' + quote + '$', 'g'); if (isLongStringQuote) { quoteRE = /^\[\[|\]\]$/g; } var name = html.replace(quoteRE, ''); var isEnglishPrefix = name.startsWith('Module:'); var isLocalizedPrefix = name.startsWith(localizedNamespace + ':'); var isDevPrefix = name.startsWith('Dev:'); if (isEnglishPrefix || isLocalizedPrefix || isDevPrefix) { var attrs = { href: mw.util.getUrl(name) }; if (isDevPrefix) { attrs.href = 'https://commons.wiki.gg/wiki/Module:' + mw.util.wikiUrlencode(name.replace('Dev:', '')); attrs.target = '_blank'; attrs.rel = 'noopener'; } var link = mw.html.element('a', attrs, name); var str = quote + link + quote; if (isLongStringQuote) { str = '[[' + link + ']]'; } $this.html(str); } }); }); dc09796545586723653a906ae1fed87411f49536 MediaWiki:Gadgets/spoilers/main.js 8 269 293 2025-11-02T00:45:09Z ARTIFICER 564804 Importing default loadout javascript text/javascript /* [[Template:Spoiler]] */ mw.hook('wikipage.content').add(function() { $('.spoiler-content') .off('click') // in case this code is loaded twice .on('click', function(e){ $(this).toggleClass('show'); }).find('a').on('click', function(e){ e.stopPropagation(); }); }); /* End Template:Spoiler */ c96e5a798a1781287a56037db79ab9094a3eae2b MediaWiki:Gadgets/spoilers 8 270 294 2025-11-02T00:45:09Z ARTIFICER 564804 Importing default loadout GadgetDefinition application/json { "settings": { "section": "", "package": true, "default": true, "hidden": true, "supportsUrlLoad": false }, "loadConditions": { "actions": [], "categories": [ "Pages with spoilers" ], "namespaces": [], "contentModels": [], "rights": [] }, "module": { "pages": [ "main.js" ], "dependencies": [ "jquery" ], "type": "general" } } e2aacbae968c704385f3937e6b0004f263907193 MediaWiki:Gadgets/charInserts 8 271 295 2025-11-02T00:45:10Z ARTIFICER 564804 Importing default loadout GadgetDefinition application/json { "settings": { "section": "", "package": true, "default": true, "hidden": true, "supportsUrlLoad": false }, "loadConditions": { "actions": [ "edit" ], "categories": [], "namespaces": [], "contentModels": [], "rights": [] }, "module": { "pages": [ "main.js" ], "dependencies": [ "jquery" ], "type": "general" } } 518bbdc62f3fe767736f2de6ee9ba2b7eb9ab0a8 MediaWiki:Gadgets/charInserts/main.js 8 272 296 2025-11-02T00:45:10Z ARTIFICER 564804 Importing default loadout javascript text/javascript $(function() { $('.mw-charinsert-item').each(function() { $(this).text($(this).closest('div').attr('data-ci-label')); $(this).css('display', 'inline-block'); }); $('.ci-loading-text').css('display','none'); }); daabc4b17b7729432f5c146630a0715a7abc13e9 MediaWiki:Gadgets/themeColorEditor 8 273 297 2025-11-02T00:45:10Z ARTIFICER 564804 Importing default loadout GadgetDefinition application/json { "settings": { "section": "", "package": true, "default": true, "hidden": false, "supportsUrlLoad": false }, "loadConditions": { "actions": [], "categories": [], "namespaces": [ 8 ], "contentModels": [ "css" ], "rights": [ "editinterface" ] }, "module": { "pages": [ "main.js" ], "dependencies": [], "type": "general" } } b512452ab2c0b2fd4d86d6a70c4c80fba41d14ed MediaWiki:Gadgets/themeColorEditor/main.js 8 274 298 2025-11-02T00:45:11Z ARTIFICER 564804 Importing default loadout javascript text/javascript $(function() { if (mw.config.get('wgPageName') != "MediaWiki:Common.css") return; mw.loader.load( 'https://commons.wiki.gg/load.php?lang=en&modules=ext.gadget.themeColorEditorScript&skin=vector&maxage=360&smaxage=360' ) }); a6d1c6789815c3c323c2afd84def2c1ca23d5efe MediaWiki:Gadgets/ranger/variables.css 8 275 299 2025-11-02T00:45:11Z ARTIFICER 564804 Importing default loadout css text/css .ranger-navbox{ --navbox-background: var(--wiki-content-background-color); /* for entire navbox */ --navbox-margin: 0.5em auto; --navbox-padding: 4px; --navbox-gap: 3px; /* when using zero-value, it must be 0px */ --navbox-outer-border-color: var(--wiki-content-border-color--accent); --navbox-outer-border-width: 1px; --navbox-outer-border-style: solid; --navbox-outer-border-radius: 0px; --navbox-font-size: calc(1em - 2px); --navbox-title-color: var(--wiki-accent-label-color); --navbox-title-font-size: calc(125%); --navbox-title-background: var(--wiki-accent-color); --navbox-title-icon-color: var(--wiki-accent-label-color); --navbox-title-link-color: var(--navbox-title-color); --navbox-title-link-color--visited: var(--navbox-title-link-color); --navbox-title-link-color--hover: var(--wiki-accent-link-color); --navbox-title-redlink-color: var(--navbox-title-link-color); --navbox-title-link-decoration: underline solid; --navbox-title-redlink-decoration: underline wavy; --navbox-title-padding--y: 0.5em; --navbox-above-background: color-mix(in srgb, var(--wiki-content-text-color) 15%, transparent); --navbox-above-color: var(--wiki-content-text-color); --navbox-above-padding: var(--navbox-list-padding); --navbox-below-background: var(--navbox-above-background); --navbox-below-color: var(--navbox-above-color); --navbox-below-padding: var(--navbox-above-padding); --navbox-header-color: var(--navbox-title-color); --navbox-header-font-size: calc(110%); --navbox-header-background: var(--navbox-title-background); --navbox-header-icon-color: var(--navbox-title-icon-color); --navbox-header-link-color: var(--navbox-title-link-color); --navbox-header-link-color--visited: var(--navbox-title-link-color--visited); --navbox-header-link-color--hover: var(--navbox-title-link-color--hover); --navbox-header-redlink-color: var(--navbox-title-redlink-color); --navbox-header-link-decoration: var(--navbox-title-link-decoration); --navbox-header-redlink-decoration: var(--navbox-title-redlink-decoration); --navbox-header-padding--y: 0.3em; --navbox-subheader-font-size: calc(100%); --navbox-subheader-padding--y: calc(var(--navbox-header-padding--y)/2); --navbox-list-background: color-mix(in srgb, var(--wiki-content-text-color) 5%, transparent); --navbox-list-background--striped: color-mix(in srgb, var(--wiki-content-text-color) 8%, transparent); --navbox-list-color: var(--wiki-content-text-color); --navbox-list-padding: 0.25em 0.5em; /* --navbox-group-* also apply to .ranger-subgroup */ --navbox-group-text-align: left; --navbox-group-text-align--mobile: left; /* only for mobile view */ --navbox-group-background: color-mix(in srgb, var(--wiki-accent-color) 20%, transparent); --navbox-group-color: var(--wiki-content-text-color); --navbox-group-padding: var(--navbox-list-padding); --navbox-tree-line-color: color-mix(in srgb, var(--wiki-accent-color) 30%, transparent); --navbox-tree-line-width: 2px; --navbox-tree-indent: 1em; --navbox-tree-line-indent: 0.5em; --navbox-tree-line-spacing: var(--navbox-gap); --icon-chevron-down: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' class='icon icon-tabler icon-tabler-chevron-down' width='24' height='24' viewBox='0 0 24 24' stroke-width='2' stroke='currentColor' fill='none' stroke-linecap='round' stroke-linejoin='round'%3E%3Cpath stroke='none' d='M0 0h24v24H0z' fill='none'%3E%3C/path%3E%3Cpath d='M6 9l6 6l6 -6'%3E%3C/path%3E%3C/svg%3E"); --icon-metalinks: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' class='icon icon-tabler icon-tabler-edit' width='24' height='24' viewBox='0 0 24 24' stroke-width='2' stroke='currentColor' fill='none' stroke-linecap='round' stroke-linejoin='round'%3E%3Cpath stroke='none' d='M0 0h24v24H0z' fill='none'%3E%3C/path%3E%3Cpath d='M7 7h-1a2 2 0 0 0 -2 2v9a2 2 0 0 0 2 2h9a2 2 0 0 0 2 -2v-1'%3E%3C/path%3E%3Cpath d='M20.385 6.585a2.1 2.1 0 0 0 -2.97 -2.97l-8.415 8.385v3h3l8.385 -8.415z'%3E%3C/path%3E%3Cpath d='M16 5l3 3'%3E%3C/path%3E%3C/svg%3E"); --navbox-icon-offset--x: 0.5rem; /* should be an absolute length (rem-based or px-based) */ } .ranger-navbox.pill, .ranger-navbox.pill-mobile{ /** vars for the "pill" style only (`.pill` and ".pill-mobile" clases) **/ --navbox-pill-gap: 0.3em; --navbox-pill-padding: 0.25em 0.75em; --navbox-pill-border-radius: 3px; --navbox-pill-box-shadow: none; --navbox-pill-background: color-mix(in srgb, var(--wiki-content-text-color) 5%, transparent); --navbox-pill-box-shadow--hover: inset 0 0 3px var(--navbox-list-color); --navbox-pill-background--hover: var(--navbox-pill-background); --navbox-pill-selflink-background: color-mix(in srgb, var(--wiki-accent-color) 15%, transparent);/* background of pills with selflink in them */ /* remove list cell background */ --navbox-list-background: none; --navbox-list-background--striped: color-mix(in srgb, var(--wiki-content-text-color) 3%, transparent); } .ranger-navbox.no-underline-title-links{ --navbox-title-link-color: var(--wiki-accent-link-color); --navbox-title-link-decoration: none; --navbox-title-redlink-decoration: none; } .ranger-navbox.noborder, .ranger-navbox.no-border{ --navbox-padding: 0px; --navbox-outer-border-width: 0px; } /****************************** * Fallback for older browsers * *******************************/ @supports not (color:color-mix(in srgb, #000, transparent)) { .ranger-navbox { --navbox-above-background: var(--wiki-content-background-color--secondary); --navbox-list-background: transparent; --navbox-list-background--striped: var(--wiki-content-background-color--secondary); --navbox-group-background: var(--wiki-content-background-color--secondary); --navbox-tree-line-color: var(--wiki-content-background-color--secondary); } .ranger-navbox.pill, .ranger-navbox.pill-mobile { --navbox-pill-background: var(--wiki-content-background-color--secondary); --navbox-list-background--striped: transparent; --navbox-pill-selflink-background: var(--wiki-content-background-color--secondary); } } /*************** * End fallback * ****************/ 0f49887270380cdac6968f16cfc75a115818c39a MediaWiki:Gadgets/hoverShowSpoilers 8 276 300 2025-11-02T00:45:12Z ARTIFICER 564804 Importing default loadout GadgetDefinition application/json { "settings": { "section": "", "package": false, "default": false, "hidden": false, "supportsUrlLoad": false }, "loadConditions": { "actions": [], "categories": [ "Pages with spoilers" ], "namespaces": [], "contentModels": [], "rights": [] }, "module": { "pages": [ "main.css" ], "dependencies": [], "type": "styles" } } 427adff0005c5bf986f2bca5bf83943f65359867 MediaWiki:Gadgets/mpEditLinks 8 277 301 2025-11-02T00:45:12Z ARTIFICER 564804 Importing default loadout GadgetDefinition application/json { "settings": { "section": "", "package": true, "default": true, "hidden": false, "supportsUrlLoad": false }, "loadConditions": { "actions": [], "categories": [ "Pages using IMP" ], "namespaces": [], "contentModels": [], "rights": [ "edit" ] }, "module": { "pages": [ "main.css", "main.js" ], "messages": [ "gadget-mpEditLinks-edit-link-text", "gadget-mpEditLinks-toggle-link-text" ], "dependencies": [ "jquery", "mediawiki.jqueryMsg", "mediawiki.util" ], "type": "general" } } c24cb75a2b66e08cd424dbe77b185a688f8e68ac MediaWiki:Gadgets/collapsibleSidebarSections 8 278 302 2025-11-02T00:45:13Z ARTIFICER 564804 Importing default loadout GadgetDefinition application/json { "settings": { "section": "appearance", "package": true, "default": false, "hidden": false, "supportsUrlLoad": false }, "loadConditions": { "actions": [], "categories": [], "namespaces": [], "contentModels": [], "rights": [] }, "module": { "pages": [ "main.css", "main.js" ], "dependencies": [ "jquery" ], "type": "general" } } d67dc8fabaf4e1d275a3b17c42f3d707f00b707c MediaWiki:Gadgets/collapsibleSidebarSections/main.js 8 279 303 2025-11-02T00:45:13Z ARTIFICER 564804 Importing default loadout javascript text/javascript $(function(){ // CONFIG section, you can edit this part // a list of sections that should be collapsed by default for *all users*. // This should be the name of the heading as listed in Mediawiki:Sidebar and is case-sensitive. // For example, if you have '* Character_Classes' and you want that section collapsed, add 'Character_Classes' into the brackets below. // Separate entries with commas and use underscores instead of spaces. // Example list: ['Character_Classes', 'Items', 'External_Links'] // Please DO NOT add navigation or tb into this list, as they are expected functionality. var INITIALLY_COLLAPSED_IDS = []; var MIN_ACTIVATION_WIDTH = 721; //END CONFIG // add the p- onto ids for ease of use, if not present INITIALLY_COLLAPSED_IDS.forEach(function(id, index){ if(!id.startsWith('p-')){ INITIALLY_COLLAPSED_IDS[index] = 'p-' + id; } }); var $portals = $("#mw-panel .vector-menu-portal"); var setup = function(){ $portals.each(function(index, el){ if(window.innerWidth < MIN_ACTIVATION_WIDTH) { return; } var $el = $(el); var $id = $el.attr("id"); if(!$id){ return; } // check if this portal should be collapsed if( // portal is set to be initially collapsed and user has not indicated that they want it open (INITIALLY_COLLAPSED_IDS.includes($id) && localStorage.getItem('sidebar_c_'+$id) != "n") || // or // user has indicated they want this portal collapsed (localStorage.getItem('sidebar_c_'+$id) === "y") ){ $el.addClass('collapsed').find('.vector-menu-content').slideUp(0); } }); } setup(); $(window).on('resize', setup); $portals.on("click", "h3", function(event){ if(window.innerWidth < MIN_ACTIVATION_WIDTH) { return; } var $el = $(this).parent(); var $id = $el.attr("id"); if(!$id){ return; } $el.toggleClass('collapsed'); if($el.hasClass('collapsed')){ // more consistent between class and slide status. localStorage.setItem('sidebar_c_'+$id, "y"); $el.find('.vector-menu-content').slideUp('fast'); } else{ localStorage.setItem('sidebar_c_'+$id, "n"); $el.find('.vector-menu-content').slideDown('fast'); } }); }); 63d4425138f9c81e8294fbd01a08de9e1f58256a MediaWiki:Gadgets/collapsibleSidebarSections/main.css 8 280 304 2025-11-02T00:45:13Z ARTIFICER 564804 Importing default loadout css text/css @media screen and (min-width: 721px) { .client-js #mw-panel .portal:not(#p-ext-discordwidget) .vector-menu-heading { cursor: pointer; display: flex; align-items: center; justify-content: space-between; transition: all 0.2s; } .client-js #mw-panel .portal:not(#p-ext-discordwidget) .vector-menu-heading::after { content: ""; display: block; pointer-events: none; width: 1em; height: 1em; margin-top: 1px; /* offset */ --mask: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' class='icon icon-tabler icon-tabler-chevron-down' width='24' height='24' viewBox='0 0 24 24' stroke-width='2' stroke='currentColor' fill='none' stroke-linecap='round' stroke-linejoin='round'%3E%3Cpath stroke='none' d='M0 0h24v24H0z' fill='none'%3E%3C/path%3E%3Cpath d='M6 9l6 6l6 -6'%3E%3C/path%3E%3C/svg%3E") no-repeat; -webkit-mask: var(--mask); mask: var(--mask); -webkit-mask-size: 100% 100%; mask-size: 100% 100%; -webkit-mask-position: center center; mask-position: center center; background-color: var(--wiki-sidebar-heading-color, var(--wiki-sidebar-link-color)); transform: rotate(180deg); } .client-js #mw-panel .portal:not(#p-ext-discordwidget).collapsed .vector-menu-heading::after { transform: rotate(0deg); } .client-js #mw-panel .vector-menu-portal.collapsed .vector-menu-heading { margin-bottom: 0; } } 5ab6f9e9146615a8038e81b9990004fdb06e00c0 MediaWiki:Gadgets/uploadMultipleFiles 8 281 305 2025-11-02T00:45:14Z ARTIFICER 564804 Importing default loadout GadgetDefinition application/json { "settings": { "section": "", "package": true, "default": true, "hidden": false, "supportsUrlLoad": false }, "loadConditions": { "actions": [], "categories": [], "namespaces": [ -1 ], "contentModels": [], "rights": [ "edit", "upload" ] }, "module": { "pages": [ "main.js" ], "dependencies": [ "jquery", "mediawiki.util" ], "type": "general" } } 13bc1e984c367575a7b4f4ac29d2cf75b4f01c6c MediaWiki:Gadgets/purge 8 282 306 2025-11-02T00:45:14Z ARTIFICER 564804 Importing default loadout GadgetDefinition application/json { "settings": { "section": "", "package": true, "default": true, "hidden": false, "supportsUrlLoad": false }, "loadConditions": { "actions": [], "categories": [], "namespaces": [], "contentModels": [], "rights": [ "edit" ] }, "module": { "pages": [ "main.js" ], "messages": [ "cargo-purgecache", "cargo-purgecache-failed", "action-purge" ], "dependencies": [ "mediawiki.util", "mediawiki.api", "mediawiki.jqueryMsg" ], "type": "general" } } ebb5f4bfef49746bef46514b0ffaccee57f3f1cd MediaWiki:Gadgets/ranger/custom.css 8 283 307 2025-11-02T00:45:15Z ARTIFICER 564804 Importing default loadout css text/css /* Custom RANGER styles can go here. Rules here will override rules of equal specificity in main.css */ 769d3248cef93d2b58dcf7339da923494f5173f8 MediaWiki:Gadgets/vectorScripts 8 284 308 2025-11-02T00:45:15Z ARTIFICER 564804 Importing default loadout GadgetDefinition application/json { "settings": { "section": "", "package": true, "default": true, "hidden": true, "supportsUrlLoad": false }, "loadConditions": { "actions": [], "categories": [], "namespaces": [], "contentModels": [], "rights": [], "skins": [ "vector" ] }, "module": { "pages": [ "main.js" ], "dependencies": [], "type": "general" } } f26fca963d213febee869477a05933a6fedfc542 MediaWiki:Gadgets/vectorScripts/main.js 8 285 309 2025-11-02T00:45:16Z ARTIFICER 564804 Importing default loadout javascript text/javascript /*** Mobile navigation toggle button ***/ $( function () { const BUTTON_CLASS = 'mobile-nav-toggle'; const EXPANDED_CLASS = 'nav--expanded'; if (document.querySelector('button.' + BUTTON_CLASS)){return;} // early return to avoid double button if this runs twice let mobileSidebarButton = document.createElement( 'button' ); let sidebar = document.getElementById( 'mw-panel' ); mobileSidebarButton.className = BUTTON_CLASS; mobileSidebarButton.addEventListener( 'click', function () { mobileSidebarButton.classList.toggle( EXPANDED_CLASS ); sidebar.classList.toggle( EXPANDED_CLASS ); } ); sidebar.prepend( mobileSidebarButton ); document.body.classList.add( 'has-vector-mobile-menu' ); } ); /*** End mobile navigation toggle button ***/ /*** #mw-head collapsing fix ***/ /*** IMPORTANT: Do not copy this code if your wiki is not updated to default loadout 2.0 (May 22, 2025) or later, or your navigation tabs will break ***/ mw.loader.using('skins.vector.legacy.js', function() { $.collapsibleTabs.calculateTabDistance = function(){ return parseInt(window.getComputedStyle(document.getElementById( 'right-navigation' ), '::before').width ) - 1; } }); /*** END #mw-head collapsing fix ***/ a167e0e95038b575ef527cf63126aa5289a8439b MediaWiki:Gadgets/userProfile 8 286 310 2025-11-02T00:45:16Z ARTIFICER 564804 Importing default loadout GadgetDefinition application/json { "settings": { "section": "", "package": true, "default": true, "hidden": false, "supportsUrlLoad": false }, "loadConditions": { "actions": [], "categories": [], "namespaces": [ -1, 2, 3 ], "contentModels": [], "rights": [] }, "module": { "pages": [ "main.js", "main.css" ], "dependencies": [ "mediawiki.interface.helpers.styles", "mediawiki.util", "mediawiki.api", "jquery" ], "type": "general" } } e9c76b459199205abae5373548f6ff36e83fefcc File:Site-favicon.ico 6 287 311 2025-11-02T19:28:00Z MasterOfDisillusionment 431405 Site favicon. Original source of the graphic: Malefact: Evil Unchained, the game. wikitext text/x-wiki == Summary == Site favicon. Original source of the graphic: Malefact: Evil Unchained, the game. == Licensing == {{License|game}} 7432b99a991ae5b0c2c31e5e6131399734c35d99 312 311 2025-11-02T19:28:48Z MasterOfDisillusionment 431405 Protected "[[File:Site-favicon.ico]]" ([Edit=Allow only administrators] (indefinite) [Rename=Allow only administrators] (indefinite) [Upload=Allow only administrators] (indefinite)) wikitext text/x-wiki == Summary == Site favicon. Original source of the graphic: Malefact: Evil Unchained, the game. == Licensing == {{License|game}} 7432b99a991ae5b0c2c31e5e6131399734c35d99 File:Site-logo.png 6 288 313 2025-11-02T19:30:41Z MasterOfDisillusionment 431405 Banner graphic for the hardcoredoom wiki. wikitext text/x-wiki == Summary == Banner graphic for the hardcoredoom wiki. == Licensing == {{License|permission}} 38ac3a0d2287df992c8ef6c6f21107aa4b5a0639 314 313 2025-11-02T19:31:04Z MasterOfDisillusionment 431405 Protected "[[File:Site-logo.png]]" ([Edit=Allow only administrators] (indefinite) [Rename=Allow only administrators] (indefinite) [Upload=Allow only administrators] (indefinite)) wikitext text/x-wiki == Summary == Banner graphic for the hardcoredoom wiki. == Licensing == {{License|permission}} 38ac3a0d2287df992c8ef6c6f21107aa4b5a0639 MediaWiki:Common.css 8 239 315 263 2025-11-02T19:36:08Z MasterOfDisillusionment 431405 css text/css /* CSS placed here will be applied to all skins */ /****************************************************************************************** ********************************* Start user-edit variables ******************************* ******************************************************************************************/ /***************************************** ****** START BASIC DESIGN VARIABLES ****** ----------------------------------------*/ :root { --wiki-content-heading-font-family: 'Linux Libertine', 'Georgia', 'Times', serif; --wiki-sidebar-heading-font-family: sans-serif; --wiki-content-border-radius: 0px; --wiki-sidebar-border-radius: 0px; } /*---------------------------------------- ******* END BASIC DESIGN VARIABLES ******* *****************************************/ /***************************************** ****** START BASIC COLOR VARIABLES ******* ----------------------------------------*/ :root, /* Begin light styles, delete from here to "end light styles" if you don't want your wiki to support any light themes (remove from [[Mediawiki:Theme-definitions]] too, or ask wiki.gg staff for help doing this) */ /* FYI: .view- will affect any theme marked |kind=light, */ /* individual themes are prefixed with .theme- instead */ .view-light { /********************** * Probably edit these * [ LIGHT VIEW ] ***********************/ --wiki-body-background-color: #F6F6F6; --wiki-body-background-image: url(filepath://Site-background.jpg); --wiki-content-background-color: #ffffff; --wiki-content-background-opacity: 100%; --wiki-content-border-color: #a7d7f9; --wiki-content-link-color: #0645ad; /* if changing this, remember to change --wiki-icon-to-link-filter as well!!! */ /* [ LIGHT VIEW ] */ --wiki-accent-color: #3366cc; --wiki-accent-label-color: #ffffff; --wiki-accent-link-color: #D5FB51; --wiki-icon-to-link-filter: invert(20%) sepia(93%) saturate(2141%) hue-rotate(210deg) brightness(83%) contrast(103%); /* put your --wiki-content-link-color into https://mrpie5.gitlab.io/css-filter-generator/ */ /**/ } /* end light styles */ /* Begin dark styles, delete from here to "end dark styles" if you don't want your wiki to support any dark themes (remove it from [[Mediawiki:Theme-definitions]] too, or ask wiki.gg staff for help doing this) */ /* FYI: .view- will affect any theme marked |kind=dark, */ /* individual themes are prefixed with .theme- instead */ .view-dark { /********************** * Probably edit these * [ DARK VIEW ] ***********************/ --wiki-body-background-color: #171717; --wiki-body-background-image: url(filepath://Site-background-dark.jpg); --wiki-content-background-color: #202020; --wiki-content-background-opacity: 90%; --wiki-content-border-color: #991A51; --wiki-content-link-color: #6d8afb; /* if changing this, remember to change --wiki-icon-to-link-filter as well!!! */ /* [ DARK VIEW ] */ --wiki-accent-color: #ff4d9d; --wiki-accent-label-color: #000; --wiki-accent-link-color: #1e1e43; --wiki-icon-to-link-filter: invert(60%) sepia(70%) saturate(3715%) hue-rotate(206deg) brightness(101%) contrast(97%); /* put your --wiki-content-link-color into https://mrpie5.gitlab.io/css-filter-generator/ */ /**/ } /* End dark styles */ /*---------------------------------------- ******* END BASIC COLOR VARIABLES ******** *****************************************/ /***************************************** **** START ADVANCED COLOR VARIABLES ****** ----------------------------------------*/ :root, .view-light { /******************* * Maybe edit these * [ LIGHT VIEW ] ********************/ --wiki-body-background-position: top center; --wiki-body-background-size: cover; --wiki-body-background-repeat: no-repeat; --wiki-body-background-attachment: fixed; --wiki-content-background-color--secondary: color-mix(in srgb, var(--wiki-content-background-color) 96%, var(--wiki-content-dynamic-color)); --wiki-content-text-color: #111111; --wiki-content-link-color--visited: var(--wiki-content-link-color); --wiki-content-link-color--hover: var(--wiki-content-link-color); --wiki-content-redlink-color: #ba0000; --wiki-content-heading-color: var(--wiki-content-text-color); --wiki-content-heading-border-color: var(--wiki-content-border-color); /* [ LIGHT VIEW ] */ --wiki-navigation-background-color: var(--wiki-content-background-color--secondary); --wiki-navigation-border-color: var(--wiki-navigation-selected-border-color); --wiki-navigation-text-color: var(--wiki-content-link-color); --wiki-navigation-selected-background-color: var(--wiki-content-background-color); --wiki-navigation-selected-border-color: var(--wiki-content-border-color); --wiki-navigation-selected-text-color: var(--wiki-content-text-color); /* [ LIGHT VIEW ] */ --wiki-neutral-color: var(--wiki-content-text-mix-color); --wiki-alert-color: #bf0017; --wiki-warning-color: #b05f30; --wiki-success-color: #0c742f; /**/ /*********************************** * Likely do not need to edit these * [ LIGHT VIEW ] ************************************/ --wiki-body-dynamic-color: #000000; --wiki-body-dynamic-color--inverted: #ffffff; --wiki-body-dynamic-color--secondary: #333333; --wiki-body-dynamic-color--secondary--inverted: #cccccc; --wiki-content-border-color--secondary: color-mix(in srgb, var(--wiki-content-border-color) 50%, transparent); --wiki-content-border-color--accent: color-mix(in srgb, var(--wiki-accent-color) 50%, transparent); --wiki-content-link-label-color: #ffffff; --wiki-content-dynamic-color: #000000; --wiki-content-dynamic-color--inverted: #ffffff; --wiki-content-dynamic-color--secondary: #333333; --wiki-content-dynamic-color--secondary--inverted: #cccccc; /* [ LIGHT VIEW ] */ --wiki-alert-label-color: #ffffff; --wiki-warning-label-color: #ffffff; --wiki-success-label-color: #ffffff; --wiki-icon-general-filter: ; /* do not set this to none, ignore the "unexpected token" error */ /**/ } .view-dark { /******************* * Maybe edit these * [ DARK VIEW ] ********************/ --wiki-body-background-position: top center; --wiki-body-background-size: cover; --wiki-body-background-repeat: no-repeat; --wiki-body-background-attachment: fixed; --wiki-content-background-color--secondary: color-mix(in srgb, var(--wiki-content-background-color) 96%, var(--wiki-content-dynamic-color)); --wiki-content-text-color: #ededed; --wiki-content-link-color--visited: var(--wiki-content-link-color); --wiki-content-link-color--hover: var(--wiki-content-link-color); --wiki-content-redlink-color: #FC5B4F; --wiki-content-heading-color: var(--wiki-content-text-color); --wiki-content-heading-border-color: var(--wiki-content-border-color); /* [ DARK VIEW ] */ --wiki-navigation-background-color: var(--wiki-content-background-color--secondary); --wiki-navigation-border-color: var(--wiki-navigation-selected-border-color); --wiki-navigation-text-color: var(--wiki-content-link-color); --wiki-navigation-selected-background-color: var(--wiki-content-background-color); --wiki-navigation-selected-border-color: var(--wiki-content-border-color); --wiki-navigation-selected-text-color: var(--wiki-content-text-color); /* [ DARK VIEW ] */ --wiki-neutral-color: var(--wiki-content-text-mix-color); --wiki-alert-color: #ff576a; --wiki-warning-color: #cf721c; --wiki-success-color: #13aa45; /**/ /*********************************** * Likely do not need to edit these * [ DARK VIEW ] ************************************/ --wiki-body-dynamic-color: #ffffff; --wiki-body-dynamic-color--inverted: #000000; --wiki-body-dynamic-color--secondary: #cccccc; --wiki-body-dynamic-color--secondary--inverted: #333333; --wiki-content-border-color--secondary: color-mix(in srgb, var(--wiki-content-border-color) 50%, transparent); --wiki-content-border-color--accent: color-mix(in srgb, var(--wiki-accent-color) 50%, transparent); --wiki-content-link-label-color: #000; --wiki-content-dynamic-color: #ffffff; --wiki-content-dynamic-color--inverted: #000000; --wiki-content-dynamic-color--secondary: #cccccc; --wiki-content-dynamic-color--secondary--inverted: #333333; /* [ DARK VIEW ] */ --wiki-alert-label-color: #000000; --wiki-warning-label-color: #000000; --wiki-success-label-color: #000000; --wiki-icon-general-filter: invert(100%); } /*---------------------------------------- ***** END ADVANCED COLOR VARIABLES ******* *****************************************/ /***************************************** **** START ADVANCED DESIGN VARIABLES ***** ----------------------------------------*/ :root { /*********************** start logo position ----------------------*/ --wiki-is-top-logo: 1; /* 1 = center logo at the top of the page; 0 = logo at the top left of the page */ --wiki-logo-file-width: 510; /* Width of the image file in px. Put a number without the letters `px`. */ --wiki-logo-file-height: 83; /* Height of the image file in px. Put a number without the letters `px`. */ --wiki-logo-height: calc(var(--wiki-logo-file-height)*1px); /* Valid only when --wiki-is-top-logo is 1. The height the logo should be shown */ --wiki-logo-margin: 15px; /* the width of margin below the logo. When --wiki-is-top-logo is 1, this is also the default value of --wiki-top-spacing */ /*----------------------- end logo position ***********************/ --wiki-is-navigation-inside-content: 0; /* 0 = default navigation tabs layout; 1 = navigation tabs inside content box */ --wiki-body-font-family: sans-serif; --wiki-content-firstheading-font-family: var(--wiki-content-heading-font-family); /* only apply to the main title of article */ /****** the following length variables must have units specified even if 0, ignore the warning *****/ --wiki-content-border-width: 1px; --wiki-sidebar-width: 10em; /* width of sidebar(#mw-panel) */ --wiki-sidebar-portal-spacing: 0px; --wiki-sidebar-border-width: var(--wiki-content-border-width); --wiki-navigation-border-radius: 0px; /* border radius of tabs */ /******************* * Maybe edit these * [ DESIGN ] ********************/ --wiki-logo-filter: none; /****** the following length variables must have units specified even if 0, ignore the warning *****/ --wiki-content-border-top-radius: var(--wiki-content-border-radius); --wiki-content-border-style: solid; --wiki-content-border-image: none; --wiki-content-backdrop-filter: none; --wiki-page-content-max-width: 9999px; /* max width of sidebar+gap+content, must be a length value. A huge value can be used to indicate no limit, e.g. 99999px */ --wiki-gap-between-sidebar-and-content: 1em; /* gap between sidebar(#mw-panel) and content(#content) */ --wiki-sidebar-font-size: 0.75em; /* please use em or rem for this */ --wiki-sidebar-line-height: 1.125; --wiki-sidebar-heading-font-size: 0.75em; /* please use em or rem for this */ --wiki-sidebar-margin: 0em; --wiki-sidebar-list-item-padding: 0.25em 0.25rem; --wiki-sidebar-list-padding: 0.25rem; --wiki-sidebar-list-item-background--hover: none; /* background of hover item */ --wiki-navigation-font-size: 0.8125em; /* please use em or rem for this */ --wiki-navigation-font-weight: normal; --wiki-navigation-selected-font-weight: var(--wiki-navigation-font-weight); --wiki-navigation-text-transform: none; --wiki-navigation-height: 2.75rem; /* height of navigation area,include spacing above tabs */ --wiki-navigation-left-spacing: calc( (1 - var(--wiki-is-navigation-inside-content))*var(--wiki-content-border-radius) + var(--wiki-is-navigation-inside-content) * 0.5rem ); --wiki-navigation-right-spacing: calc( var(--wiki-is-navigation-inside-content) * 0.5rem ); --wiki-navigation-box-background-color: var(--wiki-content-background-color); --wiki-navigation-box-background-opacity: calc(var(--wiki-content-background-opacity)*0.8*var(--wiki-is-navigation-inside-content)); --wiki-navigation-box-background: color-mix(in srgb, var(--wiki-navigation-box-background-color) var(--wiki-navigation-box-background-opacity), transparent); /* usually only needed when --wiki-is-navigation-inside-content is 1 */ --wiki-navigation-box-border-image: none; /* usually only needed when --wiki-is-navigation-inside-content is 1 */ --wiki-navigation-box-backdrop-filter: none; /* usually only needed when --wiki-is-navigation-inside-content is 1 */ --wiki-navigation-selected-backdrop-filter: var(--wiki-content-backdrop-filter); /* usually only needed when --wiki-is-navigation-inside-content is 0 */ --wiki-navigation-backdrop-filter: var(--wiki-navigation-selected-backdrop-filter); /* usually only needed when --wiki-is-navigation-inside-content is 0 */ /* nav tabs style. The vector gradient is default. * If you want to customize the style of tabs, it's easier to start with the following settings: * --wiki-navigation-background-image: none; * --wiki-navigation-selected-background-image: none; * --wiki-navigation-selected-border-width: calc( (1 - var(--wiki-is-navigation-inside-content))*var(--wiki-content-border-width) + var(--wiki-is-navigation-inside-content) * 1px ); * --wiki-navigation-selected-border-bottom-background: none; * --wiki-navigation-tab-spacing: 0.25em; * --wiki-navigation-tab-padding-top: 0.5em; * --wiki-navigation-tab-padding-bottom: 0.5em; */ --wiki-navigation-tab-spacing: -1px; /* width of the space between tabs, can be a negative number, in which case adjacent tabs will overlap */ --wiki-navigation-tab-padding-top: 1.25em; --wiki-navigation-tab-padding-x: 0.75em; --wiki-navigation-tab-padding-bottom: 4px; --wiki-navigation-selected-border-width: 0px; /* border width of selected tabs */ --wiki-navigation-border-width: var(--wiki-navigation-selected-border-width); /* border width of normal tabs */ --wiki-navigation-border-image: none; --wiki-navigation-selected-border-image: var(--wiki-navigation-border-image); --wiki-navigation-background-image: linear-gradient(to bottom,transparent 0,var(--wiki-content-border-color) 100%), linear-gradient(to bottom,transparent 0,var(--wiki-content-border-color) 100%), linear-gradient(to top,var(--wiki-navigation-background-color) 0,var(--wiki-navigation-selected-background-color) 100%); --wiki-navigation-background-repeat: no-repeat, no-repeat, repeat-x; --wiki-navigation-background-position: left bottom, right bottom, left bottom; --wiki-navigation-background-size: 1px 100%, 1px 100%, 100%; --wiki-navigation-selected-background-image: linear-gradient(to bottom,transparent 0,var(--wiki-content-border-color) 100%), linear-gradient(to bottom,transparent 0,var(--wiki-content-border-color) 100%); --wiki-navigation-selected-background-repeat: no-repeat, no-repeat; --wiki-navigation-selected-background-position: left bottom, right bottom; --wiki-navigation-selected-background-size: 1px 100%, 1px 100%; --wiki-navigation-selected-border-bottom-background: linear-gradient(to right, var(--wiki-content-border-color) 0, var(--wiki-content-border-color) 1px, transparent 1px), linear-gradient(to left, var(--wiki-content-border-color) 0, var(--wiki-content-border-color) 1px, transparent 1px); /* affects the dropdown menu under More */ --wiki-navigation-dropdown-text-color: var(--wiki-navigation-text-color); --wiki-navigation-dropdown-text-color--hover: var(--wiki-navigation-dropdown-text-color); --wiki-navigation-dropdown-font-size: var(--wiki-navigation-font-size); /* please use em or rem for this */ --wiki-navigation-dropdown-border-width: 1px; --wiki-navigation-dropdown-border-radius: var(--wiki-navigation-border-radius); --wiki-navigation-dropdown-padding: 0.25em; /* padding of the dropdown menu box */ --wiki-navigation-dropdown-item-padding: 0.625em; /* padding of each dropdown menu items */ --wiki-navigation-dropdown-item-background--hover: none; /* background of hover item */ --wiki-navigation-dropdown-border-image: none; --wiki-navigation-dropdown-backdrop-filter: none; --wiki-navigation-dropdown-box-shadow: none; /* box shadow */ /* styles of the footer */ --wiki-spacing-before-footer: 0px; --wiki-footer-border-image: none; /* padding on body element */ --wiki-top-spacing: calc(var(--wiki-is-top-logo)*var(--wiki-logo-margin) + (1 - var(--wiki-is-top-logo))*1em); /* extra spacing below wiki.gg netbar */ --wiki-left-spacing: 1em; --wiki-right-spacing: 1em; --wiki-bottom-spacing: 2em; /* pading on content-element */ --wiki-content-top-spacing:1.25em; --wiki-content-left-spacing:1.5em; --wiki-content-right-spacing:1.5em; --wiki-content-bottom-spacing:1.5em; /* end design variables */ } /*---------------------------------------- ***** END ADVANCED DESIGN VARIABLES ****** *****************************************/ /******************************* **** START SHARED VARIABLES **** **** tl;dr: don't edit this **** ********************************/ /* These variables are rarely touched, usually inherit other variables, and are shared on all themes. In 99% of cases none of these are ever edited, and you should only be doing so if you have a very clear vision, understand what you are doing, and *know* that what you are trying to do is not accomplished by changing another variable in the above sections. Since these are by default shared across all themes, if you support multiple themes you'll probably want to separate the variables you want to modify here into .view-x blocks like above. If you don't understand what that means or how to do that then you probably shouldn't be modifying this section. */ :root { --wiki-content-border-bottom-width: var(--wiki-content-border-width); --wiki-content-border-bottom-style: var(--wiki-content-border-style); --wiki-content-border-bottom-color: var(--wiki-content-border-color); --wiki-content-text-mix-color: color-mix(in srgb, var(--wiki-content-background-color), var(--wiki-content-text-color) 62%); --wiki-content-text-mix-color-95: color-mix(in srgb, var(--wiki-content-background-color) 95%, var(--wiki-content-text-color)); --wiki-content-text-color--hover: var(--wiki-content-text-color); /* heading */ --wiki-content-heading-border-bottom-width: 1px; --wiki-content-heading-border-style: solid; --wiki-content-heading-font-weight: normal; --wiki-content-heading-font-style: normal; --wiki-content-heading-text-transform: none; --wiki-content-heading-line-height: normal; --wiki-content-heading-text-shadow: none; /* first heading (h1) */ --wiki-content-firstheading-border-bottom-width: var(--wiki-content-heading-border-bottom-width); --wiki-content-firstheading-border-style: var(--wiki-content-heading-border-style); --wiki-content-firstheading-border-color: var(--wiki-content-heading-border-color); --wiki-content-firstheading-font-weight: var(--wiki-content-heading-font-weight); --wiki-content-firstheading-font-style: var(--wiki-content-heading-font-style); --wiki-content-firstheading-text-transform: var(--wiki-content-heading-text-transform); --wiki-content-firstheading-line-height: var(--wiki-content-heading-line-height); --wiki-content-firstheading-color: var(--wiki-content-heading-color); --wiki-content-firstheading-text-shadow: none; /* sub-heading (h3, h4, h5, h6) */ --wiki-content-subheading-border-bottom-width: 0px; --wiki-content-subheading-border-style: var(--wiki-content-heading-border-style); --wiki-content-subheading-border-color: var(--wiki-content-heading-border-color); --wiki-content-subheading-font-family: var(--wiki-body-font-family); --wiki-content-subheading-font-weight: bold; --wiki-content-subheading-font-style: normal; --wiki-content-subheading-text-transform: none; --wiki-content-subheading-line-height: var(--wiki-content-heading-line-height); --wiki-content-subheading-color: var(--wiki-content-heading-color); --wiki-content-subheading-text-shadow: none; /* heading size */ --wiki-content-firstheading-font-size: 1.8em; --wiki-content-heading-h2-font-size: 1.5em; --wiki-content-heading-h3-font-size: 1.2em; --wiki-content-heading-h4-font-size: 114%; --wiki-content-heading-h5-font-size: 108%; --wiki-content-heading-h6-font-size: 100%; --wiki-content-toc-background: var(--wiki-content-background-color--secondary); --wiki-content-toc-border-width: 1px; --wiki-content-toc-border-style: solid; --wiki-content-toc-border-color: var(--wiki-content-border-color); --wiki-content-toc-border-radius: 0px; --wiki-content-toc-border-image: none; --wiki-content-toc-box-shadow: 0 0.1em 0.2em #000000; --wiki-content-catlinks-background: var(--wiki-content-background-color--secondary); --wiki-content-catlinks-border-width: 1px; --wiki-content-catlinks-border-style: solid; --wiki-content-catlinks-border-color: var(--wiki-content-border-color); --wiki-content-catlinks-border-radius: 0px; --wiki-content-catlinks-border-image: none; --wiki-content-catlinks-box-shadow: none; --wiki-content-filetoc-background: var(--wiki-content-background-color--secondary); --wiki-content-filetoc-border-width: 1px; --wiki-content-filetoc-border-style: solid; --wiki-content-filetoc-border-color: var(--wiki-content-border-color); --wiki-content-filetoc-border-radius: 0px; --wiki-content-filetoc-border-image: none; --wiki-content-filetoc-box-shadow: none; --wiki-logo-offset-x: 0px; --wiki-logo-offset-y: 0px; --wiki-sidebar-padding: 0px; --wiki-sidebar-background-color: var(--wiki-content-background-color); --wiki-sidebar-background-opacity: var(--wiki-content-background-opacity); --wiki-sidebar-background-image: none; --wiki-sidebar-background-position: center; --wiki-sidebar-background-repeat: repeat; --wiki-sidebar-background-size: auto; --wiki-sidebar-box-shadow: none; --wiki-sidebar-filter: none; --wiki-sidebar-backdrop-filter: var(--wiki-content-backdrop-filter); --wiki-sidebar-border-color: var(--wiki-content-border-color); --wiki-sidebar-border-style: solid; --wiki-sidebar-border-image: none; --wiki-sidebar-link-color: var(--wiki-content-link-color); --wiki-sidebar-link-color--hover: var(--wiki-content-link-color--hover); --wiki-sidebar-heading-color: var(--wiki-content-heading-color); --wiki-sidebar-heading-font-weight: normal; --wiki-sidebar-heading-font-style: normal; --wiki-sidebar-heading-text-transform: none; --wiki-sidebar-heading-line-height: normal; --wiki-sidebar-heading-padding: 0.5rem 0.25rem 0.5rem 0.5rem; --wiki-sidebar-heading-margin: 0px 0px -0.5rem 0px; --wiki-sidebar-heading-background: none; --wiki-sidebar-heading-border-image: none; --wiki-sidebar-heading-text-shadow: none; --wiki-sidebar-list-background: none; --wiki-sidebar-list-border-image: none; --wiki-sidebar-list-margin: 0px; --wiki-sidebar-list-item-background: none; --wiki-sidebar-list-item-border-image: none; --wiki-sidebar-list-item-background--hover: none; --wiki-sidebar-list-item-border-image--hover: none; --wiki-sidebar-list-item-spacing: 0px; --wiki-sidebar-icon-to-link-filter: var(--wiki-icon-to-link-filter); --wiki-sidebar-offset: 0px; /* Vertical offset */ --wiki-sidebar-box-padding: 0px; --wiki-sidebar-box-background: none; --wiki-sidebar-box-border: 0px; --wiki-sidebar-box-border-radius: 0px; --wiki-sidebar-box-border-image: none; --wiki-accent-color--hover: color-mix(in srgb, var(--wiki-accent-color) 90%, var(--wiki-accent-label-color)); --wiki-footer-border-width: var(--wiki-content-border-width); --wiki-footer-border-style: var(--wiki-content-border-style); --wiki-footer-border-color: var(--wiki-content-border-color); --wiki-footer-background-color: var(--wiki-content-background-color); --wiki-footer-background-opacity: var(--wiki-content-background-opacity); --wiki-footer-backdrop-filter: var(--wiki-content-backdrop-filter); --wiki-footer-text-color: var(--wiki-content-text-color); --wiki-footer-link-color: var(--wiki-content-link-color); --wiki-footer-link-color--hover: var(--wiki-content-link-color--hover); --wiki-footer-border-radius: var(--wiki-content-border-radius); --wiki-navigation-background-opacity: var(--wiki-navigation-selected-background-opacity); --wiki-navigation-background-color--hover: var(--wiki-navigation-background-color); --wiki-navigation-background-opacity--hover: var(--wiki-navigation-background-opacity); --wiki-navigation-background-image--hover: var(--wiki-navigation-background-image); --wiki-navigation-background-position--hover: var(--wiki-navigation-background-position); --wiki-navigation-background-repeat--hover: var(--wiki-navigation-background-repeat); --wiki-navigation-background-size--hover: var(--wiki-navigation-background-size); --wiki-navigation-text-color--hover: var(--wiki-content-link-color--hover); --wiki-navigation-transform--hover: none; --wiki-navigation-selected-border-style: solid; --wiki-navigation-selected-background-opacity: var(--wiki-content-background-opacity); --wiki-navigation-border-style: solid; --wiki-navigation-border-color--hover: var(--wiki-navigation-border-color); --wiki-navigation-border-image--hover: var(--wiki-navigation-border-image); --wiki-navigation-border-bottom-color: var(--wiki-navigation-selected-border-color); --wiki-navigation-border-bottom-color--hover: var(--wiki-navigation-border-color--hover); /* change this color to transparent to make it behave like a selected tab */ --wiki-navigation-border-bottom-style: var(--wiki-navigation-selected-border-style); --wiki-navigation-border-bottom-width: calc(var(--wiki-is-navigation-inside-content, 0) * var(--wiki-navigation-selected-border-width, 1px) + (1 - var(--wiki-is-navigation-inside-content, 0)) * var(--wiki-content-border-width, 1px)); --wiki-navigation-icon-size: 1em; --wiki-navigation-tab-padding-x--icon: var(--wiki-navigation-tab-padding-x); --wiki-navigation-bottom-spacing: 0px; /* If you change this to greater than 0px, you should usually change the value of --wiki-navigation-selected-border-bottom-background to var(--wiki-navigation-border-bottom-color) */ --wiki-navigation-dropdown-background-color: var(--wiki-content-background-color); --wiki-navigation-dropdown-background-opacity: var(--wiki-content-background-opacity); --wiki-navigation-dropdown-border-color: var(--wiki-navigation-border-color); --wiki-navigation-dropdown-offset: 0px; /* vertical offset */ --wiki-navigation-search-background-color: var(--wiki-content-background-color--secondary); --wiki-navigation-search-background-image: none; --wiki-navigation-search-background-position: 0; --wiki-navigation-search-background-size: auto; --wiki-navigation-search-background-repeat: repeat; --wiki-navigation-search-backdrop-filter: none; --wiki-navigation-search-border-color: var(--wiki-navigation-border-color); --wiki-navigation-search-border-color--hover: var(--wiki-accent-color); --wiki-navigation-search-border-style: solid; --wiki-navigation-search-border-width: 1px; --wiki-navigation-search-border-radius: 2px; --wiki-navigation-search-border-image: none; --wiki-navigation-search-border-image--hover: var(--wiki-navigation-search-border-image); --wiki-navigation-search-box-shadow: none; --wiki-navigation-search-box-shadow--hover: var(--wiki-navigation-search-box-shadow); --wiki-navigation-search-text-color: var(--wiki-content-text-color); --wiki-navigation-search-font-size: var(--wiki-navigation-font-size); --wiki-navigation-search-height: 2em; --wiki-navigation-search-button-color: currentColor; --wiki-navigation-search-button-color--hover: var(--wiki-navigation-search-button-color); --wiki-navigation-search-button-color-opacity: 80%; --wiki-navigation-search-button-color-opacity--hover: 95%; --wiki-navigation-search-bottom-spacing: 3px; --wiki-navigation-search-highlight-background-color: color-mix(in srgb, var(--wiki-accent-color) 5%, transparent); --wiki-navigation-gap-between-left-and-right: calc(max(0px, var(--wiki-navigation-tab-spacing))); /* minimum width between #left-navigation and #right-navigation before tabs start to collapse */ } /*** mobile adjustments ***/ @media screen and (max-width: 720px) { body.has-vector-mobile-menu{ --wiki-sidebar-offset: 0px; /* Vertical offset */ --wiki-sidebar-margin: 0px; --wiki-sidebar-heading-background: none; --wiki-sidebar-heading-border-image: none; --wiki-sidebar-heading-margin: 0px 0px -0.5em 0px; --wiki-sidebar-list-margin: 0px; --wiki-sidebar-list-background: none; --wiki-sidebar-list-border-image: none; --wiki-sidebar-list-item-background: none; --wiki-sidebar-list-item-border-image: none; --wiki-sidebar-list-item-background--hover: none; --wiki-sidebar-list-item-border-image--hover: none; --wiki-sidebar-list-item-spacing: 0px; --wiki-sidebar-line-height: 1.125; --wiki-sidebar-background-opacity: 100%; --wiki-navigation-search-border-width: 1px; --wiki-logo-offset-x: 0px; --wiki-logo-offset-y: 0px; } } /***************************** **** END SHARED VARIABLES **** ******************************/ /****************************************************************************************** ********************************* End user-edit variables ********************************* ******************************************************************************************/ /****************************** * Fallback for older browsers * * DONT EDIT THIS * *******************************/ @supports not (color:color-mix(in srgb, #000, transparent)) { .view-dark, .view-light, :root { --wiki-content-text-mix-color: var(--wiki-content-text-color); --wiki-content-text-mix-color-95: var(--wiki-content-background-color); --wiki-content-background-color--secondary: var(--wiki-content-dynamic-color--secondary--inverted); --wiki-content-border-color--secondary: var(--wiki-content-border-color); --wiki-content-border-color--accent: var(--wiki-accent-color); --wiki-accent-color--hover: var(--wiki-accent-color); --wiki-navigation-search-highlight-background-color: transparent; } } /***************************** * End older browser fallback * ******************************/ /***************************** * PortableInfoboxes * ******************************/ :root { --pi-background: var(--wiki-content-background-color); --pi-secondary-background: var(--wiki-accent-color); --pi-secondary-background-label: var(--wiki-accent-label-color); --pi-border-color: color-mix(in srgb, var(--pi-secondary-background) 50%, transparent); } .portable-infobox .pi-title, .portable-infobox .pi-header { text-align: center; font-size: 1.5em; background: color-mix(in srgb, var(--pi-secondary-background) 75%, transparent); color: var(--pi-secondary-background-label); } .portable-infobox .pi-data, .portable-infobox .pi-group { background: var(--wiki-content-background-color--secondary); } .portable-infobox .pi-image { padding: 8px; } .pi-image-thumbnail { max-width: 100%; } .pi-caption { color: var(--wiki-content-text-mix-color); } .pi-section-navigation .pi-section-tab.pi-section-active, .pi-section-navigation .pi-section-tab.current, .pi-media-collection .pi-tab-link.current { background: var(--pi-secondary-background); color: var(--pi-secondary-background-label); } .pi-collapse > .pi-item:first-child { cursor: pointer; } /* overqualify these to overwrite normal content heading styles */ .mw-body .portable-infobox h2, .mw-body .portable-infobox h3 { border-bottom: 0; font-family: inherit; font-weight: 700; margin: 0; } /***************************** * End PortableInfoboxes * ******************************/ /******************* * Main page layout * ********************/ #mp-container { display: grid; gap: 10px; clear:both; /* for .mw-indicators combined with NOTITLE */ } @media screen and (max-width: 990px) { /* for mobile screens */ #mp-container { grid-template-areas:var(--main-page-layout--mobile); grid-template-columns:var(--main-page-layout-columns--mobile, 100%); } .mp-box.mp-hide-on-mobile { display: none; } } @media screen and (min-width: 990px) and (max-width: 1350px) { /* for narrow screens, between 990px and 1350px */ #mp-container { grid-template-areas:var(--main-page-layout--tablet); grid-template-columns:var(--main-page-layout-columns--tablet, 1fr 1fr); } .mp-box.mp-hide-on-tablet { display: none; } } @media screen and (min-width: 1350px) { /* for all other screens, 1350px and wider */ #mp-container { grid-template-areas:var(--main-page-layout--desktop); grid-template-columns:var(--main-page-layout-columns--desktop, 2fr 1fr 2fr); } .mp-box.mp-hide-on-desktop { display: none; } } .mp-box { position: relative; display: flex; flex-flow: column nowrap; width: 100%; box-sizing: border-box; background: color-mix(in srgb, var(--wiki-content-background-color--secondary) 25%, transparent); border: 1px solid var(--wiki-content-border-color); padding: 0px; } .mp-body { height: 100%; display: flex; padding: 0.5em; flex-flow: column nowrap; } .mp-box.centered-content .mp-body { height: 100%; display: flex; flex-flow: column nowrap; justify-content: space-evenly; } .mp-box.has-floating-image { display: block; } .mp-box.has-floating-image .mp-body { height: unset; display: block; } .mp-box.header-only { border-bottom-width:0px; } .mp-box.header-only .mp-body { display:none; } .mp-box.missing .mw-inputbox-input { /* max-width doesn't override the input element's 'size' property, but that property does work as a max-width itself, so we can set width:100% for the same effect */ width:100% !important; } /* overqualified to override normal heading styles */ .mw-body .mp-box h2 { text-align: center; font-weight: bold; font-family: var(--wiki-content-heading-font-family); overflow: initial; border-bottom: 1px solid var(--wiki-content-border-color); font-size: 150%; margin: 0; padding: 5px 0; color: var(--wiki-content-heading-color); } #mp-box-welcome { text-align: center; position: relative; overflow: hidden; } #mp-box-welcome h2 { font-size: 200%; } #mp-welcome { display: flex; flex-flow: column nowrap; position: relative; height: 100%; z-index: 2; box-sizing: border-box; } #mp-welcome .welcome-subtitle { height: 100%; background: color-mix(in srgb, var(--wiki-content-dynamic-color--inverted) 85%, transparent); padding: 0.5em; } #mp-banner { position: absolute; width: 100%; height: 100%; filter: blur(5px); z-index: -1; background: url(/images/e/e0/MP_banner.jpg); background-size: cover; background-repeat: no-repeat; background-position: top center; } .view-dark #mp-banner { filter: blur(5px) brightness(50%); } .view-light #mp-banner { filter: blur(5px) contrast(50%); } /* [[Template:MP_link]] */ .mp-links { --gap: 10px; } .mp-links > ul { display: flex; flex-flow: row wrap; justify-content: space-evenly; margin: 2px; gap: var(--gap); } .mp-links > ul > li { display: flex; flex-flow: column nowrap; align-items: stretch; text-align: center; box-sizing: border-box; flex: max(calc(50% - var(--gap)), 5em) 1 1; outline: 1px solid var(--wiki-content-link-color); transition: 0.1s ease-in; } .mp-links > ul > li:hover { background-color: color-mix(in srgb, var(--wiki-content-link-color) 20%, transparent); } .mp-links.columns-1 > ul > li {flex: max(calc(100% - var(--gap)), 5em) 1 1;} .mp-links.columns-2 > ul > li {flex: max(calc(50% - var(--gap)), 5em) 1 1;} .mp-links.columns-3 > ul > li {flex: max(calc((100% / 3) - var(--gap)), 5em) 1 1;} .mp-links.columns-4 > ul > li {flex: max(calc(25% - var(--gap)), 5em) 1 1;} .mp-links.columns-5 > ul > li {flex: max(calc(20% - var(--gap)), 5em) 1 1;} .mp-links.columns-6 > ul > li {flex: max(calc((100% / 6) - var(--gap)), 5em) 1 1;} .mp-links.columns-7 > ul > li {flex: max(calc((100% / 7) - var(--gap)), 5em) 1 1;} .mp-links.columns-8 > ul > li {flex: max(calc((100% / 8) - var(--gap)), 5em) 1 1;} .mp-links.columns-max > ul > li {flex: max(calc(0% - var(--gap)), 5em) 1 1;} .mp-links > ul > li:hover a { text-decoration: underline; } .mp-links > ul > li > a { display: flex; align-items: center; justify-content: center; height: 100%; flex: 1 1 auto; box-sizing: border-box; padding: 5px; } .mp-links > ul > li > a:first-child { height: 100%; } .mp-links > ul > li > a:last-child:not(:first-child) { height: unset; } .mp-links.stretch, .mp-links.stretch > ul { height: 100%; } .mp-links.side-image li { flex-flow: row nowrap; } .mp-links.plain > ul > li { outline-color: transparent; } /*********************** * End main page layout * ************************/ /********************************************************************************************************************* * Semantically-correct horizontal lists (for Module:Navbox, and they're more machine-readable than {{*}}-formatting) * **********************************************************************************************************************/ .hlist dl, .hlist ol, .hlist ul { margin: 0; padding: 0; } /* Display list items inline */ .hlist dd, .hlist dt, .hlist li { /* * don't trust the note that says margin doesn't work with inline * removing margin: 0 makes dds have margins again * We also want to reset margin-right in Minerva */ margin: 0; display: inline; } /* Display requested top-level lists inline */ .hlist.inline, .hlist.inline dl, .hlist.inline ol, .hlist.inline ul, /* Display nested lists inline */ .hlist dl dl, .hlist dl ol, .hlist dl ul, .hlist ol dl, .hlist ol ol, .hlist ol ul, .hlist ul dl, .hlist ul ol, .hlist ul ul { display: inline; } /* Hide empty list items */ .hlist .mw-empty-li { display: none; } /* TODO: :not() can maybe be used here to remove the later rule. naive test * seems to work. more testing needed. like so: */ .hlist dt:not(:last-child)::after { content: ":\20"; } .hlist dd:not(:last-child)::after, .hlist li:not(:last-child)::after { /* "space, Middle Dot, space" We use unicode numbers instead of the raw characters due to a Firefox encoding bug on unicode characters. The space is also encoded because raw spaces combined with a unicode number strips the spaces under some conditions such as single-line lists */ /* content: "\20\00B7\20"; font-weight: bold; */ /* "space &nbsp; • &nbsp; space" There may (and likely) be an extra whitespace between <li>s, therefore we have to use a space character as last character of this sequence. By this way, the last space and the next whitespace will collapse as a single space, to make the whitespace on both sides of the middle dot the same width. */ content: "\20\A0\2022\A0\20"; font-weight: inherit; } /* Add parentheses around nested lists */ .hlist dd ol::before, .hlist dd ul::before, .hlist dd dl::before, .hlist dt ol::before, .hlist dt ul::before, .hlist dt dl::before, .hlist li ol::before, .hlist li ul::before, .hlist li dl::before { content: "\20("; font-weight: inherit; } .hlist dd ol::after, .hlist dd ul::after, .hlist dd dl::after, .hlist dt ol::after, .hlist dt ul::after, .hlist dt dl::after, .hlist li ol::after, .hlist li ul::after, .hlist li dl::after { content: ")"; font-weight: inherit; } /* Put ordinals in front of ordered list items */ .hlist ol { counter-reset: listitem; } .hlist ol > li { counter-increment: listitem; } .hlist ol > li::before { content: " " counter(listitem) ".\20"; } /* Progressive enhancement: * try to make the dot always follow the list item in same line */ .hlist :is(li,dt,dd):not(:has(:is(li,dt,dd))) { display: inline-block; } /******************************************** * End semantically-correct horizontal lists * *********************************************/ /*** Miscellaneous ***/ .responsive-image { max-width: 100%; height: auto; box-sizing: border-box; } .view-dark .invert-on-dark, .view-light .invert-on-light { filter: invert(100%); } .pixelated { image-rendering: pixelated; } @media screen and (min-width: 720px) { .mobileonly { display: none; } } @media screen and (max-width: 720px) { .nomobile { display: none; } } /*** Utility classes for standard MW galleries ***/ /* it's important that spaced comes before centered in the sheet */ .gallery.gallery.gallery.spaced { /* this selector looks ridiculous but is actually part of stock Vector and therefore a necessary override */ display: flex; flex-flow: row wrap; justify-content: space-evenly; margin-left: unset; } .gallery.centered { text-align: center; } /************************** * Start Modular Templates * **************************/ /********* [[Template:Ambox]] *********/ .ambox { --ambox-color: var(--wiki-accent-color); border: 1px solid var(--wiki-content-border-color); border-left: 10px solid var(--ambox-color); border-radius: 2px; display: flex; align-items: center; gap: .6em; margin: 1em 0; padding: 3px .6em; background-color: var(--wiki-content-background-color--secondary); box-shadow: 2px 2px 5px 0px #0002; } @media (min-width: 720px) { .ambox { margin-inline: 10%; } } .ambox.tiny { padding: .04rem .5em; margin-inline: 0; width: fit-content; } .ambox + .ambox { margin-top: -.6em; } .ambox-content { flex: 1; } .ambox-content p { margin: .15em 0; } .ambox-title { font-weight: bold; } /********* [[Template:Hatnote]] *********/ .hatnote { padding: 1px 0 1px 1.6em; margin-bottom: 0.5em; font-style: italic; border-top: 1px solid var(--wiki-content-border-color--secondary); border-bottom: 1px solid var(--wiki-content-border-color--secondary); } .hatnote.icon { padding-left: 0; } /********* [[Template:Spoiler]] *********/ .spoiler-content { background-color: color-mix(in srgb, var(--wiki-content-dynamic-color) 50%, transparent); transition: all 0.3s; cursor: pointer; overflow: auto; } @supports not (color:color-mix(in srgb, #000, transparent)) { .spoiler-content { background-color: var(--wiki-content-dynamic-color--secondary); } } .spoiler-content > * { pointer-events: none; opacity: 0; transition: all 0.3s; } .spoiler-content.show { background-color: transparent; } .spoiler-content.show > * { pointer-events: unset; opacity: 1; } /********* [[Template:Link icon]] *********/ .link-icon { --link-icon-line-height: 1.5em; --link-icon-size: 1.5em; display: inline-flex; align-items: center; height: var(--link-icon-line-height); vertical-align: bottom; } .link-icon .regular { align-self: center; } .link-icon .regular a { display: flex; } .link-icon .regular img { height: var(--link-icon-size); max-width: var(--link-icon-size); } .link-icon .fallback { outline: 1px solid var(--wiki-content-text-color); border-radius: 50%; text-align: center; width: var(--link-icon-size); line-height: var(--link-icon-size); } .link-icon.notext, .link-icon.notext .fallback { display: inline-block; } /********* [[Template:Quote]] *********/ .quote { background: var(--wiki-content-background-color--secondary); border-radius: 5px; border: 2px solid var(--wiki-content-border-color); margin: .5em 0; padding: .5em; overflow-y: hidden; } .quote .block { display: block; } .quote .title { font-size: large; font-weight: bold; } .quote .content { font-style: italic; } .quote .author { font-weight: bold; text-align: end; } .quote .marks-wrapper { display: flex; gap: 5px; } .quote .marks-wrapper::before, .quote .marks-wrapper::after { font-size: 100px; line-height: 0px; } .quote .marks-wrapper::before { content: "\201C"; margin-top: 40px; } .quote .marks-wrapper::after { content: "\201D"; align-self: end; margin-bottom: -10px; } .client-js .mw-charinsert-item { display: none; } /************************ * End Modular Templates * *************************/ /***************************** * Used by [[Template:Color]] * ******************************/ .color__splotch { display: inline-block; height: 1em; width: 1em; box-sizing: border-box; vertical-align: text-top; border-radius: 50%; border: 1px solid var(--wiki-content-text-color); } /********************* * End Template:Color * **********************/ /********************************* * Used by [[Template:TOC limit]] * **********************************/ .toclimit-2 .toclevel-1 ul, .toclimit-3 .toclevel-2 ul, .toclimit-4 .toclevel-3 ul, .toclimit-5 .toclevel-4 ul, .toclimit-6 .toclevel-5 ul, .toclimit-7 .toclevel-6 ul { display: none; } /************************* * End Template:TOC limit * **************************/ /********************************* * Used by [[Template:TOC right]] * **********************************/ @media all and (min-width: 720px) { .tocright { float: right; clear: right; margin: 0 0 0.5em 1em; } } /************************* * End Template:TOC right * **************************/ a351e9e6ffdf90c855817708baff2fddd49f0ccb MediaWiki:Sidebar 8 289 316 2025-11-02T20:10:57Z MasterOfDisillusionment 431405 Created page with "* navigation ** mainpage|mainpage-description ** recentchanges-url|recentchanges ** randompage-url|randompage ** helppage|help-mediawiki * wiki.gg ** support:|sidebar-support-wiki ** Wikigg-ticket-link|sidebar-submit-ticket ** wikigg-socialmedia-joinlink|wikigg-socialmedia-jointext-sidebar" wikitext text/x-wiki * navigation ** mainpage|mainpage-description ** recentchanges-url|recentchanges ** randompage-url|randompage ** helppage|help-mediawiki * wiki.gg ** support:|sidebar-support-wiki ** Wikigg-ticket-link|sidebar-submit-ticket ** wikigg-socialmedia-joinlink|wikigg-socialmedia-jointext-sidebar 736383dfe34c8d75c14f79851906a11b19b812aa 319 316 2025-11-02T20:51:40Z MasterOfDisillusionment 431405 wikitext text/x-wiki * navigation ** mainpage|mainpage-description ** recentchanges-url|recentchanges ** randompage-url|randompage ** helppage|help-mediawiki * Important Pages ** Submission Rules|Rules & FAQ * wiki.gg ** support:|sidebar-support-wiki ** Wikigg-ticket-link|sidebar-submit-ticket ** wikigg-socialmedia-joinlink|wikigg-socialmedia-jointext-sidebar bf57130bed7bb650435a76ef3f6854a7f2016e7a 320 319 2025-11-02T20:53:48Z MasterOfDisillusionment 431405 wikitext text/x-wiki * navigation ** mainpage|mainpage-description ** recentchanges-url|recentchanges ** randompage-url|randompage ** helppage|help-mediawiki * Important Pages ** Submission Rules|Rules & FAQ ** Category:Game Information|Game Information * wiki.gg ** support:|sidebar-support-wiki ** Wikigg-ticket-link|sidebar-submit-ticket ** wikigg-socialmedia-joinlink|wikigg-socialmedia-jointext-sidebar bed0d69f6640f27fa5dbf77ab58d7337be2c66ee 325 320 2025-11-02T21:39:54Z MasterOfDisillusionment 431405 wikitext text/x-wiki * navigation ** mainpage|mainpage-description ** recentchanges-url|recentchanges ** randompage-url|randompage ** helppage|help-mediawiki * Important Pages ** Submission Rules|Rules & FAQ ** Category:Game Information|Game Information ** Category:Mods And Assets|Mods & Assets ** Category:Tutorials And Guides|Tutorials & Guides ** Category:Boom Tropes|Boom Tropes * wiki.gg ** support:|sidebar-support-wiki ** Wikigg-ticket-link|sidebar-submit-ticket ** wikigg-socialmedia-joinlink|wikigg-socialmedia-jointext-sidebar e3a7edcf781a1e85fb2f509b03f96eba54e8c6e4 329 325 2025-11-02T21:51:03Z MasterOfDisillusionment 431405 wikitext text/x-wiki * navigation ** mainpage|mainpage-description ** recentchanges-url|recentchanges ** randompage-url|randompage ** helppage|help-mediawiki * Important Pages ** FAQ|FAQ ** Category:Game Information|Game Information ** Category:Mods And Assets|Mods & Assets ** Category:Tutorials And Guides|Tutorials & Guides ** Category:Boom Tropes|Boom Tropes * wiki.gg ** support:|sidebar-support-wiki ** Wikigg-ticket-link|sidebar-submit-ticket ** wikigg-socialmedia-joinlink|wikigg-socialmedia-jointext-sidebar 30e9c431038db2a425cfe8feef07badf468ffbd5 336 329 2025-11-03T15:26:49Z MasterOfDisillusionment 431405 wikitext text/x-wiki * navigation ** mainpage|mainpage-description ** recentchanges-url|recentchanges ** randompage-url|randompage ** helppage|help-mediawiki * Important Pages ** FAQ|FAQ ** Category:Game Information|Game Information ** Category:Mods And Assets|Mods & Assets ** Category:Tutorials And Guides|Tutorials & Guides ** Category:Boom Tropes|Boom Tropes ** All Categories|Categories * wiki.gg ** support:|sidebar-support-wiki ** Wikigg-ticket-link|sidebar-submit-ticket ** wikigg-socialmedia-joinlink|wikigg-socialmedia-jointext-sidebar d016c0dd7b95ebdb0dbe1830899d3513258582b1 337 336 2025-11-03T15:27:33Z MasterOfDisillusionment 431405 wikitext text/x-wiki * navigation ** mainpage|mainpage-description ** recentchanges-url|recentchanges ** randompage-url|randompage ** helppage|help-mediawiki * Important Pages ** FAQ|FAQ ** Category:Game Information|Game Information ** Category:Mods And Assets|Mods & Assets ** Category:Tutorials And Guides|Tutorials & Guides ** Category:Boom Tropes|Boom Tropes ** Categories|Categories * wiki.gg ** support:|sidebar-support-wiki ** Wikigg-ticket-link|sidebar-submit-ticket ** wikigg-socialmedia-joinlink|wikigg-socialmedia-jointext-sidebar 24cec8d370a4c7c949c7cbc2b27b06ca2c472abd 338 337 2025-11-03T15:29:18Z MasterOfDisillusionment 431405 wikitext text/x-wiki * navigation ** mainpage|mainpage-description ** recentchanges-url|recentchanges ** randompage-url|randompage ** helppage|help-mediawiki * Important Pages ** FAQ|FAQ ** Category:Game Information|Game Information ** Category:Mods And Assets|Mods & Assets ** Category:Tutorials And Guides|Tutorials & Guides ** Category:Boom Tropes|Boom Tropes * wiki.gg ** support:|sidebar-support-wiki ** Wikigg-ticket-link|sidebar-submit-ticket ** wikigg-socialmedia-joinlink|wikigg-socialmedia-jointext-sidebar 30e9c431038db2a425cfe8feef07badf468ffbd5 Category:Game Information 14 290 317 2025-11-02T20:31:54Z MasterOfDisillusionment 431405 Created page with "Relevant Doom engine games are listed on this page. = Classic = The original classics from the 90s are listed here. == [[Doom]] == Lorem ipsum dolor sit amet, consectetur adipiscing elit. Sed neque magna, facilisis sed orci convallis, condimentum aliquet sem. Duis porttitor quam tortor, vitae molestie augue porttitor in. Etiam eget eleifend felis, id elementum eros. == [[Heretic]] == Lorem ipsum dolor sit amet, consectetur adipiscing elit. Sed neque magna, facilisis..." wikitext text/x-wiki Relevant Doom engine games are listed on this page. = Classic = The original classics from the 90s are listed here. == [[Doom]] == Lorem ipsum dolor sit amet, consectetur adipiscing elit. Sed neque magna, facilisis sed orci convallis, condimentum aliquet sem. Duis porttitor quam tortor, vitae molestie augue porttitor in. Etiam eget eleifend felis, id elementum eros. == [[Heretic]] == Lorem ipsum dolor sit amet, consectetur adipiscing elit. Sed neque magna, facilisis sed orci convallis, condimentum aliquet sem. Duis porttitor quam tortor, vitae molestie augue porttitor in. Etiam eget eleifend felis, id elementum eros. = Modern = Neo-boomer shooters created using a modified version of the Doom engine (e.g. UZDoom) should be listed here. == [[Malefact]] == Lorem ipsum dolor sit amet, consectetur adipiscing elit. Sed neque magna, facilisis sed orci convallis, condimentum aliquet sem. Duis porttitor quam tortor, vitae molestie augue porttitor in. Etiam eget eleifend felis, id elementum eros. 2c6d3789245525c17291f94220cf84a10cb4b24b 330 317 2025-11-02T22:35:10Z MasterOfDisillusionment 431405 wikitext text/x-wiki Relevant Doom engine games are listed on this page. = Classic = The original classics from the 90s are listed here. == [[Doom]] == Lorem ipsum dolor sit amet, consectetur adipiscing elit. Sed neque magna, facilisis sed orci convallis, condimentum aliquet sem. Duis porttitor quam tortor, vitae molestie augue porttitor in. Etiam eget eleifend felis, id elementum eros. == [[Heretic]] == Lorem ipsum dolor sit amet, consectetur adipiscing elit. Sed neque magna, facilisis sed orci convallis, condimentum aliquet sem. Duis porttitor quam tortor, vitae molestie augue porttitor in. Etiam eget eleifend felis, id elementum eros. == [[Strife ]] == Lorem ipsum dolor sit amet, consectetur adipiscing elit. Sed neque magna, facilisis sed orci convallis, condimentum aliquet sem. Duis porttitor quam tortor, vitae molestie augue porttitor in. Etiam eget eleifend felis, id elementum eros. = Modern = Neo-boomer shooters created using a modified version of the Doom engine (e.g. UZDoom) should be listed here. == [[Malefact]] == Lorem ipsum dolor sit amet, consectetur adipiscing elit. Sed neque magna, facilisis sed orci convallis, condimentum aliquet sem. Duis porttitor quam tortor, vitae molestie augue porttitor in. Etiam eget eleifend felis, id elementum eros. cf00457c1cc2f98735ff4af68b39c59f5f54bc70 331 330 2025-11-02T22:36:21Z MasterOfDisillusionment 431405 Protected "[[Category:Game Information]]" ([Edit=Allow only administrators] (indefinite) [Rename=Allow only administrators] (indefinite)) wikitext text/x-wiki Relevant Doom engine games are listed on this page. = Classic = The original classics from the 90s are listed here. == [[Doom]] == Lorem ipsum dolor sit amet, consectetur adipiscing elit. Sed neque magna, facilisis sed orci convallis, condimentum aliquet sem. Duis porttitor quam tortor, vitae molestie augue porttitor in. Etiam eget eleifend felis, id elementum eros. == [[Heretic]] == Lorem ipsum dolor sit amet, consectetur adipiscing elit. Sed neque magna, facilisis sed orci convallis, condimentum aliquet sem. Duis porttitor quam tortor, vitae molestie augue porttitor in. Etiam eget eleifend felis, id elementum eros. == [[Strife ]] == Lorem ipsum dolor sit amet, consectetur adipiscing elit. Sed neque magna, facilisis sed orci convallis, condimentum aliquet sem. Duis porttitor quam tortor, vitae molestie augue porttitor in. Etiam eget eleifend felis, id elementum eros. = Modern = Neo-boomer shooters created using a modified version of the Doom engine (e.g. UZDoom) should be listed here. == [[Malefact]] == Lorem ipsum dolor sit amet, consectetur adipiscing elit. Sed neque magna, facilisis sed orci convallis, condimentum aliquet sem. Duis porttitor quam tortor, vitae molestie augue porttitor in. Etiam eget eleifend felis, id elementum eros. cf00457c1cc2f98735ff4af68b39c59f5f54bc70 333 331 2025-11-03T00:01:25Z MasterOfDisillusionment 431405 wikitext text/x-wiki Relevant Doom engine games are listed on this page. = Classic = The original classics from the 90s are listed here. == [[Doom]] == Lorem ipsum dolor sit amet, consectetur adipiscing elit. Sed neque magna, facilisis sed orci convallis, condimentum aliquet sem. Duis porttitor quam tortor, vitae molestie augue porttitor in. Etiam eget eleifend felis, id elementum eros. == [[Heretic]] == Lorem ipsum dolor sit amet, consectetur adipiscing elit. Sed neque magna, facilisis sed orci convallis, condimentum aliquet sem. Duis porttitor quam tortor, vitae molestie augue porttitor in. Etiam eget eleifend felis, id elementum eros. = Modern = Neo-boomer shooters created using a modified version of the Doom engine (e.g. UZDoom) should be listed here. == [[Malefact]] == Lorem ipsum dolor sit amet, consectetur adipiscing elit. Sed neque magna, facilisis sed orci convallis, condimentum aliquet sem. Duis porttitor quam tortor, vitae molestie augue porttitor in. Etiam eget eleifend felis, id elementum eros. 2c6d3789245525c17291f94220cf84a10cb4b24b FAQ 0 291 318 2025-11-02T20:47:25Z MasterOfDisillusionment 431405 Created page with "If you intend to contribute to the wiki, please read this page carefully first. = General = Lorem ipsum dolor sit amet, consectetur adipiscing elit. Sed neque magna, facilisis sed orci convallis, condimentum aliquet sem. Duis porttitor quam tortor, vitae molestie augue porttitor in. Etiam eget eleifend felis, == Category 1 == Lorem ipsum dolor sit amet, consectetur adipiscing elit. Sed neque magna, facilisis sed orci convallis, condimentum aliquet sem. Duis porttitor q..." wikitext text/x-wiki If you intend to contribute to the wiki, please read this page carefully first. = General = Lorem ipsum dolor sit amet, consectetur adipiscing elit. Sed neque magna, facilisis sed orci convallis, condimentum aliquet sem. Duis porttitor quam tortor, vitae molestie augue porttitor in. Etiam eget eleifend felis, == Category 1 == Lorem ipsum dolor sit amet, consectetur adipiscing elit. Sed neque magna, facilisis sed orci convallis, condimentum aliquet sem. Duis porttitor quam tortor, vitae molestie augue porttitor in. Etiam eget eleifend felis, == Category 2 == Lorem ipsum dolor sit amet, consectetur adipiscing elit. Sed neque magna, facilisis sed orci convallis, condimentum aliquet sem. Duis porttitor quam tortor, vitae molestie augue porttitor in. Etiam eget eleifend felis, e74561cf4c23c4a958ae6c7beccf8bc65ce078e0 327 318 2025-11-02T21:50:08Z MasterOfDisillusionment 431405 MasterOfDisillusionment renamed page [[Submission Rules]] to [[FAQ]] wikitext text/x-wiki If you intend to contribute to the wiki, please read this page carefully first. = General = Lorem ipsum dolor sit amet, consectetur adipiscing elit. Sed neque magna, facilisis sed orci convallis, condimentum aliquet sem. Duis porttitor quam tortor, vitae molestie augue porttitor in. Etiam eget eleifend felis, == Category 1 == Lorem ipsum dolor sit amet, consectetur adipiscing elit. Sed neque magna, facilisis sed orci convallis, condimentum aliquet sem. Duis porttitor quam tortor, vitae molestie augue porttitor in. Etiam eget eleifend felis, == Category 2 == Lorem ipsum dolor sit amet, consectetur adipiscing elit. Sed neque magna, facilisis sed orci convallis, condimentum aliquet sem. Duis porttitor quam tortor, vitae molestie augue porttitor in. Etiam eget eleifend felis, e74561cf4c23c4a958ae6c7beccf8bc65ce078e0 Category:Mods And Assets 14 292 321 2025-11-02T21:00:07Z MasterOfDisillusionment 431405 Created page with "Pages related to user created mods, TCs, and game assets belong here. = Mods = Mods modify the gameplay of a game and optionally contain new levels and or game assets. == Mod 1 == Lorem ipsum dolor sit amet, consectetur adipiscing elit. == Mod 2 == Lorem ipsum dolor sit amet, consectetur adipiscing elit. = Assets = Assets are used to expand the base game via addition graphics, sound, code, etc. == Assets 1 == Lorem ipsum dolor sit amet, consectetur adipiscing eli..." wikitext text/x-wiki Pages related to user created mods, TCs, and game assets belong here. = Mods = Mods modify the gameplay of a game and optionally contain new levels and or game assets. == Mod 1 == Lorem ipsum dolor sit amet, consectetur adipiscing elit. == Mod 2 == Lorem ipsum dolor sit amet, consectetur adipiscing elit. = Assets = Assets are used to expand the base game via addition graphics, sound, code, etc. == Assets 1 == Lorem ipsum dolor sit amet, consectetur adipiscing elit. == Assets 2 == Lorem ipsum dolor sit amet, consectetur adipiscing elit. 2eea1520de74af8e58f714a9be09a9925a0ffa26 Category:Tutorials And Guides 14 293 322 2025-11-02T21:23:05Z MasterOfDisillusionment 431405 Created page with "If you're a newcomer to modding or mapping using the UZDoom engine, this page contains useful resources for getting started. = Category 1 = Lorem ipsum dolor sit amet, consectetur adipiscing elit. == Sub-Category 1 == Lorem ipsum dolor sit amet, consectetur adipiscing elit. == Sub-Category 2 == Lorem ipsum dolor sit amet, consectetur adipiscing elit." wikitext text/x-wiki If you're a newcomer to modding or mapping using the UZDoom engine, this page contains useful resources for getting started. = Category 1 = Lorem ipsum dolor sit amet, consectetur adipiscing elit. == Sub-Category 1 == Lorem ipsum dolor sit amet, consectetur adipiscing elit. == Sub-Category 2 == Lorem ipsum dolor sit amet, consectetur adipiscing elit. 3b0f65be69e131d5fd78f8f46f651cd1a4900e62 332 322 2025-11-02T22:50:38Z MasterOfDisillusionment 431405 Protected "[[Category:Tutorials And Guides]]": Quality Control ([Edit=Allow only administrators] (indefinite) [Rename=Allow only administrators] (indefinite)) wikitext text/x-wiki If you're a newcomer to modding or mapping using the UZDoom engine, this page contains useful resources for getting started. = Category 1 = Lorem ipsum dolor sit amet, consectetur adipiscing elit. == Sub-Category 1 == Lorem ipsum dolor sit amet, consectetur adipiscing elit. == Sub-Category 2 == Lorem ipsum dolor sit amet, consectetur adipiscing elit. 3b0f65be69e131d5fd78f8f46f651cd1a4900e62 Category:Boom Tropes 14 294 323 2025-11-02T21:31:17Z MasterOfDisillusionment 431405 Created page with "Boomshoot Tropes is an archive of recurring design elements, level setups, and architecture patterns found in classic FPS games, especially Doom, Quake, and their many fan-made mods. Besides being fun to browse, the tropes can also be a potentially useful source of inspiration for level designers since these tropes can be easily incorporated into their own designs. = Geometry = Lorem ipsum dolor sit amet, consectetur adipiscing elit. == Sub-Category == = Detailing =..." wikitext text/x-wiki Boomshoot Tropes is an archive of recurring design elements, level setups, and architecture patterns found in classic FPS games, especially Doom, Quake, and their many fan-made mods. Besides being fun to browse, the tropes can also be a potentially useful source of inspiration for level designers since these tropes can be easily incorporated into their own designs. = Geometry = Lorem ipsum dolor sit amet, consectetur adipiscing elit. == Sub-Category == = Detailing = Lorem ipsum dolor sit amet, consectetur adipiscing elit. == Sub-Category == = Encounter Design = Lorem ipsum dolor sit amet, consectetur adipiscing elit. == Sub-Category == 7458e584679d2da37ee5fcfdbfbd1a5e9951af94 324 323 2025-11-02T21:31:55Z MasterOfDisillusionment 431405 wikitext text/x-wiki Boomshoot Tropes is an archive of recurring design elements, level setups, and architecture patterns found in classic FPS games, especially Doom, Quake, and their many fan-made mods. Besides being fun to browse, the tropes can also be a potentially useful source of inspiration for level designers since these tropes can be easily incorporated into their own designs. = Geometry = Lorem ipsum dolor sit amet, consectetur adipiscing elit. == Sub-Category == Lorem ipsum dolor sit amet, consectetur adipiscing elit. = Detailing = Lorem ipsum dolor sit amet, consectetur adipiscing elit. == Sub-Category == Lorem ipsum dolor sit amet, consectetur adipiscing elit. = Encounter Design = Lorem ipsum dolor sit amet, consectetur adipiscing elit. == Sub-Category == Lorem ipsum dolor sit amet, consectetur adipiscing elit. 22d6f4ebb98ea6407f1f92c156b6e438ca7d7014 326 324 2025-11-02T21:46:21Z MasterOfDisillusionment 431405 wikitext text/x-wiki Boom Tropes is an archive of recurring design elements, level setups, and architecture patterns found in classic FPS games and their mods. Besides being fun to browse, the tropes can also be a potentially useful source of inspiration for level designers since these tropes can be easily incorporated into their own designs. = Geometry = Lorem ipsum dolor sit amet, consectetur adipiscing elit. == Sub-Category == Lorem ipsum dolor sit amet, consectetur adipiscing elit. = Detailing = Lorem ipsum dolor sit amet, consectetur adipiscing elit. == Sub-Category == Lorem ipsum dolor sit amet, consectetur adipiscing elit. = Encounter Design = Lorem ipsum dolor sit amet, consectetur adipiscing elit. == Sub-Category == Lorem ipsum dolor sit amet, consectetur adipiscing elit. 3f63d2d6127ce80d4f6e3f72e66a7b523a18365a Submission Rules 0 295 328 2025-11-02T21:50:08Z MasterOfDisillusionment 431405 MasterOfDisillusionment renamed page [[Submission Rules]] to [[FAQ]] wikitext text/x-wiki #REDIRECT [[FAQ]] 0b8804ea6bff6f1ef778cad0872760f69e5c3f8e File:Icon GameInformation.png 6 296 334 2025-11-03T15:19:15Z MasterOfDisillusionment 431405 Icon graphic for the Game Information page/category. wikitext text/x-wiki == Summary == Icon graphic for the Game Information page/category. == Licensing == {{License|permission}} 27f7acbc79cf17082067376c7ef3afd31bad3365 335 334 2025-11-03T15:19:53Z MasterOfDisillusionment 431405 Protected "[[File:Icon GameInformation.png]]": Part of skin ([Edit=Allow only administrators] (indefinite) [Rename=Allow only administrators] (indefinite) [Upload=Allow only administrators] (indefinite)) wikitext text/x-wiki == Summary == Icon graphic for the Game Information page/category. == Licensing == {{License|permission}} 27f7acbc79cf17082067376c7ef3afd31bad3365 Hardcore Doom Wiki/pages 0 5 339 9 2025-11-03T15:32:42Z MasterOfDisillusionment 431405 wikitext text/x-wiki {{Main page box/start | title = Useful wiki pages | class = centered-content }} <div class="mp-links columns-2"> * {{MP link| Game Information |image=Icon GameInformation.png |size=64px }} * {{MP link| Mods & Assets |link=Special:Random }} * {{MP link| Tutorials & Guides |link=Example character |image=Example_character_image.png |size=92px }} * {{MP link| Boom Tropes |link=Template:Example character infobox |image=Example_character_image.png |size=92px }} </div> {{Main page box/end}}<noinclude>[[Category:Main page boxes]]</noinclude><!-- don't edit this line --> 0ce8243119ec5943770ecbea1b210493dac34181 346 339 2025-11-03T15:43:09Z MasterOfDisillusionment 431405 wikitext text/x-wiki {{Main page box/start | title = Useful wiki pages | class = centered-content }} <div class="mp-links columns-2"> * {{MP link| Game Information |link=Category:Game Information |image=Icon GameInformation.png |size=64px }} * {{MP link| Mods & Assets |link=Category:Mods And Assets |image=Icon ModsAndResources.png |size=64px }} * {{MP link| Tutorials & Guides |link=Category:Tutorials And Guides |image=Icon Tutorials.png |size=64px }} * {{MP link| Boom Tropes |link=Category:Boom Tropes |image=Icon BoomTropes.png |size=64px }} </div> {{Main page box/end}}<noinclude>[[Category:Main page boxes]]</noinclude><!-- don't edit this line --> cdeff2fb4f145a5629d270b39f8f41e101d44234 File:Icon ModsAndResources.png 6 297 340 2025-11-03T15:38:26Z MasterOfDisillusionment 431405 Icon graphic for the Mods and resources category. wikitext text/x-wiki == Summary == Icon graphic for the Mods and resources category. == Licensing == {{License|permission}} 43749fe04a242b90f4747306efc228fba397f117 341 340 2025-11-03T15:38:41Z MasterOfDisillusionment 431405 Protected "[[File:Icon ModsAndResources.png]]": Part of skin ([Edit=Allow only administrators] (indefinite) [Rename=Allow only administrators] (indefinite) [Upload=Allow only administrators] (indefinite)) wikitext text/x-wiki == Summary == Icon graphic for the Mods and resources category. == Licensing == {{License|permission}} 43749fe04a242b90f4747306efc228fba397f117 File:Icon Tutorials.png 6 298 342 2025-11-03T15:40:08Z MasterOfDisillusionment 431405 Icon graphic for the tutorials and guides category page. wikitext text/x-wiki == Summary == Icon graphic for the tutorials and guides category page. == Licensing == {{License|permission}} 22831d9438b6c38a6c69af409f003b8118938abe 343 342 2025-11-03T15:40:21Z MasterOfDisillusionment 431405 Protected "[[File:Icon Tutorials.png]]": Part of skin ([Edit=Allow only administrators] (indefinite) [Rename=Allow only administrators] (indefinite) [Upload=Allow only administrators] (indefinite)) wikitext text/x-wiki == Summary == Icon graphic for the tutorials and guides category page. == Licensing == {{License|permission}} 22831d9438b6c38a6c69af409f003b8118938abe File:Icon BoomTropes.png 6 299 344 2025-11-03T15:40:55Z MasterOfDisillusionment 431405 Icon graphic for the boom tropes category page. wikitext text/x-wiki == Summary == Icon graphic for the boom tropes category page. == Licensing == {{License|permission}} 6aaa14ffa03ebf1032800f1fdd730847aa26e5cf 345 344 2025-11-03T15:41:10Z MasterOfDisillusionment 431405 Protected "[[File:Icon BoomTropes.png]]": Part of skin ([Edit=Allow only administrators] (indefinite) [Rename=Allow only administrators] (indefinite) [Upload=Allow only administrators] (indefinite)) wikitext text/x-wiki == Summary == Icon graphic for the boom tropes category page. == Licensing == {{License|permission}} 6aaa14ffa03ebf1032800f1fdd730847aa26e5cf Hardcore Doom Wiki/about 0 6 347 11 2025-11-03T15:49:12Z MasterOfDisillusionment 431405 wikitext text/x-wiki {{Main page box/start | title = About This Wiki }} Welcome to the Hardcore Doom wiki! This place serves as a modding resource for a curated list of UZDoom engine games, most notably Doom, Heretic, and Malefact, in addition to documenting the mods created by our community of mod and level makers. You can also find guides on how to get started with UZDoom modding and level design here. The wiki is also home to Boom Tropes, an archive of recurring design elements, level setups, and architectural patterns found in classic FPS games and their mods. <div style="text-align:right">[[Hardcore Doom|Read more...]]</div> {{Main page box/end}}<noinclude>[[Category:Main page boxes]]</noinclude><!-- don't edit this line --> b385db1a035c81a7aeea1777ccc95069c5ae18a1 348 347 2025-11-03T15:52:51Z MasterOfDisillusionment 431405 wikitext text/x-wiki {{Main page box/start | title = About This Wiki }} Welcome to the Hardcore Doom wiki! This place serves as a modding resource for a curated list of UZDoom engine games, most notably Doom, Heretic, and Malefact, in addition to documenting the mods created by our community of mod and level makers. You can also find guides on how to get started with UZDoom modding and level design here. The wiki is also home to Boom Tropes, an archive of recurring design elements, level setups, and architectural patterns commonly found in classic (e.g. 'boomer shooter') fps games and their mods. <div style="text-align:right">[[Hardcore Doom|Read more...]]</div> {{Main page box/end}}<noinclude>[[Category:Main page boxes]]</noinclude><!-- don't edit this line --> 8aab2090b4f48432a82190510eafe8c10f6674d7 File:Icon HardcoreDoom.png 6 300 349 2025-11-03T16:04:09Z MasterOfDisillusionment 431405 Icon graphic for the hardcore Doom website. wikitext text/x-wiki == Summary == Icon graphic for the hardcore Doom website. == Licensing == {{License|permission}} b990038b12e080539e70bcf79d3564febe49a3c1 350 349 2025-11-03T16:04:28Z MasterOfDisillusionment 431405 Protected "[[File:Icon HardcoreDoom.png]]": Part of skin ([Edit=Allow only administrators] (indefinite) [Rename=Allow only administrators] (indefinite) [Upload=Allow only administrators] (indefinite)) wikitext text/x-wiki == Summary == Icon graphic for the hardcore Doom website. == Licensing == {{License|permission}} b990038b12e080539e70bcf79d3564febe49a3c1 Hardcore Doom Wiki/external 0 8 351 15 2025-11-03T16:10:05Z MasterOfDisillusionment 431405 wikitext text/x-wiki {{Main page box/start | title = External links }} <div class="mp-links columns-2"> * {{MP link| Official site |link=https://hardcoredoom.com/ |image=Icon HardcoreDoom.png |size=64x64px }} * {{MP link| Discord |link=https://discord.gg/vVMV2zHEFA |image=Discord.svg |size=64x64px }} * {{MP link| X |link=https://x.com/goremaxxed33966g |image=Bluesky.svg |size=64x64px }} * {{MP link| YouTube |link=https://www.youtube.com/@GoreMaxxed |image=indie.io.svg |size=64x64px }} </div> {{Main page box/end}}<noinclude>[[Category:Main page boxes]]</noinclude><!-- don't edit this line --> 8cbae8f439571c506c4fb3150f4af9ed9f0e40fb 352 351 2025-11-03T16:16:17Z MasterOfDisillusionment 431405 wikitext text/x-wiki {{Main page box/start | title = External links }} <div class="mp-links columns-2"> * {{MP link| Official site |link=https://hardcoredoom.com/ |image=Icon HardcoreDoom.png |size=64x64px }} * {{MP link| Discord |link=https://discord.gg/vVMV2zHEFA |image=Discord.svg |size=64x64px }} * {{MP link| X |link=https://x.com/GoremaxxedProductions |image=Bluesky.svg |size=64x64px }} * {{MP link| YouTube |link=https://www.youtube.com/@GoreMaxxed |image=indie.io.svg |size=64x64px }} </div> {{Main page box/end}}<noinclude>[[Category:Main page boxes]]</noinclude><!-- don't edit this line --> e6c7c5a9a058938a5a032b2b19c71303393dbed1 353 352 2025-11-03T16:28:01Z MasterOfDisillusionment 431405 wikitext text/x-wiki {{Main page box/start | title = External links }} <div class="mp-links columns-2"> * {{MP link| Official site |link=https://hardcoredoom.com/ |image=Icon HardcoreDoom.png |size=64x64px }} * {{MP link| Discord |link=https://discord.gg/vVMV2zHEFA |image=Discord.svg |size=64x64px }} * {{MP link| X |link=https://x.com/goremaxxed33966/status/1985383309493326207 |image=Bluesky.svg |size=64x64px }} * {{MP link| YouTube |link=https://www.youtube.com/@GoreMaxxed |image=indie.io.svg |size=64x64px }} </div> {{Main page box/end}}<noinclude>[[Category:Main page boxes]]</noinclude><!-- don't edit this line --> 2c659442bc88fb705fb8137f18a74092688f3c58 358 353 2025-11-03T22:59:41Z MasterOfDisillusionment 431405 wikitext text/x-wiki {{Main page box/start | title = External links }} <div class="mp-links columns-2"> * {{MP link| Official site |link=https://hardcoredoom.com/ |image=Icon HardcoreDoom.png |size=64x64px }} * {{MP link| Discord |link=https://discord.gg/vVMV2zHEFA |image=Discord.svg |size=64x64px }} * {{MP link| X |link=https://x.com/goremaxxed33966/status/1985383309493326207 |image=Icon X.png |size=64x64px }} * {{MP link| YouTube |link=https://www.youtube.com/@GoreMaxxed |image=Icon Youtube.png |size=64x64px }} </div> {{Main page box/end}}<noinclude>[[Category:Main page boxes]]</noinclude><!-- don't edit this line --> a787830d3ec8c51db5e87ee62ac2a6241ca3988b File:Icon X.png 6 301 354 2025-11-03T22:55:41Z MasterOfDisillusionment 431405 Social media icon for X. wikitext text/x-wiki == Summary == Social media icon for X. == Licensing == {{License|permission}} 6bcb78517131f3e0820b0eccc1f363aa0999043f 357 354 2025-11-03T22:56:47Z MasterOfDisillusionment 431405 Protected "[[File:Icon X.png]]": Part of skin ([Edit=Allow only administrators] (indefinite) [Rename=Allow only administrators] (indefinite) [Upload=Allow only administrators] (indefinite)) wikitext text/x-wiki == Summary == Social media icon for X. == Licensing == {{License|permission}} 6bcb78517131f3e0820b0eccc1f363aa0999043f File:Icon Youtube.png 6 302 355 2025-11-03T22:56:25Z MasterOfDisillusionment 431405 Icon for the youtube social media link. wikitext text/x-wiki == Summary == Icon for the youtube social media link. == Licensing == {{License|permission}} 6874d37f362191e91cbe9183899b1edb9192bed5 356 355 2025-11-03T22:56:36Z MasterOfDisillusionment 431405 Protected "[[File:Icon Youtube.png]]": Part of skin ([Edit=Allow only administrators] (indefinite) [Rename=Allow only administrators] (indefinite) [Upload=Allow only administrators] (indefinite)) wikitext text/x-wiki == Summary == Icon for the youtube social media link. == Licensing == {{License|permission}} 6874d37f362191e91cbe9183899b1edb9192bed5 Template:GameInfo Infobox 10 303 359 2025-11-03T23:41:01Z MasterOfDisillusionment 431405 Created page with "<includeonly>{{#invoke:Infobox|main {{#invoke:Infobox|main |kind=GameInfo |sep=, |image={{#if:{{{image|}}}|[[File:{{{image}}}{{!}}300px]]}} |sections=General Info, Modding & Community, External Resources |General Info=Release date, Engine, Setting/Theme, Latest Version, Developer(s), Publisher(s) |Modding & Community=Mod support, Notable mods/total conversions |External Resources=Official website, steam page, GOG page, ModDB page }} </includeonly><noinclude> {{documen..." wikitext text/x-wiki <includeonly>{{#invoke:Infobox|main {{#invoke:Infobox|main |kind=GameInfo |sep=, |image={{#if:{{{image|}}}|[[File:{{{image}}}{{!}}300px]]}} |sections=General Info, Modding & Community, External Resources |General Info=Release date, Engine, Setting/Theme, Latest Version, Developer(s), Publisher(s) |Modding & Community=Mod support, Notable mods/total conversions |External Resources=Official website, steam page, GOG page, ModDB page }} </includeonly><noinclude> {{documentation}} [[Category:Infobox templates]]</noinclude> d8bb3ed3e4edbee382d2a672ac5b48f87726a183 360 359 2025-11-03T23:42:13Z MasterOfDisillusionment 431405 MasterOfDisillusionment renamed page [[Template:GameInfo]] to [[Template:GameInfo Infobox]]: Misspelled title wikitext text/x-wiki <includeonly>{{#invoke:Infobox|main {{#invoke:Infobox|main |kind=GameInfo |sep=, |image={{#if:{{{image|}}}|[[File:{{{image}}}{{!}}300px]]}} |sections=General Info, Modding & Community, External Resources |General Info=Release date, Engine, Setting/Theme, Latest Version, Developer(s), Publisher(s) |Modding & Community=Mod support, Notable mods/total conversions |External Resources=Official website, steam page, GOG page, ModDB page }} </includeonly><noinclude> {{documentation}} [[Category:Infobox templates]]</noinclude> d8bb3ed3e4edbee382d2a672ac5b48f87726a183 364 360 2025-11-04T00:05:44Z MasterOfDisillusionment 431405 wikitext text/x-wiki <includeonly>{{#invoke:Infobox|main {{#invoke:Infobox|main |kind=GameInfo |sep=, |image={{#if:{{{image|}}}|[[File:{{{image}}}{{!}}300px]]}} |sections=General Info, Modding & Community, External Resources |General Info=Release date, Engine, Setting/Theme, Latest Version, Developer(s), Publisher(s) |Modding & Community=Mod support, Notable mods/total conversions |External Resources=Official website, Steam page, GOG page, ModDB page }} </includeonly><noinclude> {{documentation}} [[Category:Infobox templates]]</noinclude> beffa62e93cb2d94bce125978dd1e7e916174f27 367 364 2025-11-04T00:43:30Z RheingoldRiver 2743 wikitext text/x-wiki <includeonly>{{#invoke:Infobox|main |kind=GameInfo |sep=, |image={{#if:{{{image|}}}|[[File:{{{image}}}{{!}}300px]]}} |sections=General Info, Modding & Community, External Resources |General Info=Release date, Engine, Setting/Theme, Latest Version, Developer(s), Publisher(s) |Modding & Community=Mod support, Notable mods/total conversions |External Resources=Official website, Steam page, GOG page, ModDB page }}</includeonly><noinclude> {{documentation}} [[Category:Infobox templates]]</noinclude> c4115bd4dd24fabca73d420aba8485dd2216fb71 Template:GameInfo 10 304 361 2025-11-03T23:42:13Z MasterOfDisillusionment 431405 MasterOfDisillusionment renamed page [[Template:GameInfo]] to [[Template:GameInfo Infobox]]: Misspelled title wikitext text/x-wiki #REDIRECT [[Template:GameInfo Infobox]] dafeca5c56cc8189a7adfea5a618e106f612e601 File:DoomCover.jpg 6 305 362 2025-11-03T23:58:01Z MasterOfDisillusionment 431405 Cover art for Doom. wikitext text/x-wiki == Summary == Cover art for Doom. == Licensing == {{License|fairuse}} 66ba17c907796cd30787791247cc4301d3ff36be 363 362 2025-11-03T23:58:36Z MasterOfDisillusionment 431405 Protected "[[File:DoomCover.jpg]]": Infobox images for games should not be changed. ([Edit=Allow only administrators] (indefinite) [Rename=Allow only administrators] (indefinite) [Upload=Allow only administrators] (indefinite)) wikitext text/x-wiki == Summary == Cover art for Doom. == Licensing == {{License|fairuse}} 66ba17c907796cd30787791247cc4301d3ff36be Doom 0 306 365 2025-11-04T00:06:39Z MasterOfDisillusionment 431405 Created page with "{{GameInfo |title= Doom |image= DoomCover.jpg |Release date= 1993 |Engine= id Tech 1 |Setting/Theme= Sci-fi, military, satanic. |Latest Version= 1.9 |Developer(s)= id Software |Publisher(s)= id Software |Mod support= Extensive; source port is public and numerous tools exist. |Notable mods/total conversions= Brutal Doom, Final Doomer+, Plutona 2 |Official website= Discontinued |Steam page= [[https://store.steampowered.com/app/2280/DOOM__DOOM_II/| DOOM & DOOM II]] |G..." wikitext text/x-wiki {{GameInfo |title= Doom |image= DoomCover.jpg |Release date= 1993 |Engine= id Tech 1 |Setting/Theme= Sci-fi, military, satanic. |Latest Version= 1.9 |Developer(s)= id Software |Publisher(s)= id Software |Mod support= Extensive; source port is public and numerous tools exist. |Notable mods/total conversions= Brutal Doom, Final Doomer+, Plutona 2 |Official website= Discontinued |Steam page= [[https://store.steampowered.com/app/2280/DOOM__DOOM_II/| DOOM & DOOM II]] |GOG page= [[https://www.gog.com/en/game/doom_doom_ii| DOOM & DOOM II]] |ModDB page= }} Doom is a first person shooter action game created by Id Software and published in 1993. d96eecc1db5c517975c1e1b6c47416cc32fa69e1 366 365 2025-11-04T00:11:12Z MasterOfDisillusionment 431405 wikitext text/x-wiki {{GameInfo |title= Doom |image= DoomCover.jpg |Release date= 1993 |Engine= id Tech 1 |Setting/Theme= Sci-fi military, satanic. |Latest Version= 1.9 |Developer(s)= id Software |Publisher(s)= id Software |Mod support= Extensive; source port is public and numerous tools exist. |Notable mods/total conversions= * Brutal Doom * Final Doomer+ * Plutona 2 |Official website= |Steam page= [[https://store.steampowered.com/app/2280/DOOM__DOOM_II/| DOOM & DOOM II]] |GOG page= [[https://www.gog.com/en/game/doom_doom_ii| DOOM & DOOM II]] |ModDB page= }} Doom is a first person shooter action game created by Id Software and published in 1993. 0f9944c780b9b1c9e123549b4c040ffa42d7564f 373 366 2025-11-04T18:35:00Z MasterOfDisillusionment 431405 wikitext text/x-wiki {{GameInfo |title= Doom |image= DoomCover.jpg |Release date= 1993 |Engine= id Tech 1 |Setting/Theme= Sci-fi military, satanic. |Latest Version= 1.9 |Developer(s)= id Software |Publisher(s)= id Software |Mod support= Extensive; source port is public and numerous tools exist. |Notable mods/total conversions= * Brutal Doom * Final Doomer+ * Plutona 2 |Official website= |Steam page= [[https://store.steampowered.com/app/2280/DOOM__DOOM_II/| DOOM & DOOM II]] |GOG page= [[https://www.gog.com/en/game/doom_doom_ii| DOOM & DOOM II]] |ModDB page= }} Doom is a first person shooter action game created by Id Software and published in 1993. [[Category:Game Information]] 59166b72f162029bb20e9f287d3f0deedd042581 374 373 2025-11-04T18:56:09Z MasterOfDisillusionment 431405 wikitext text/x-wiki {{GameInfo |title= Doom |image= DoomCover.jpg |Release date= 1993 |Engine= id Tech 1 |Setting/Theme= Sci-fi military, satanic. |Latest Version= 1.9 |Developer(s)= id Software |Publisher(s)= id Software |Mod support= Extensive; source port is public and numerous tools exist. |Notable mods/total conversions= * Brutal Doom * Final Doomer+ * Plutona 2 |Official website= |Steam page= [[https://store.steampowered.com/app/2280/DOOM__DOOM_II/| DOOM & DOOM II]] |GOG page= [[https://www.gog.com/en/game/doom_doom_ii| DOOM & DOOM II]] |ModDB page= }} Doom is a first person shooter action game created by Id Software and published in 1993. = Gameplay = == Mechanics == Insert Content. == Weapons == Insert Content. == Enemies == Insert Content. == Levels == Insert Content. = Setting and Story= == Plot == Insert Content. == Characters == Insert Content. = Design = == Graphics & Audio == Insert Content. == Visuals == Insert Content. = Development History = == Early Concepts == Insert Content. == Beta == Insert Content. == Final Build == Insert Content. [[Category:Game Information]] 57f401fb9a8c772b85b60b18f3fe01725714b05c Template:GameInfo Infobox/doc 10 307 368 2025-11-04T01:22:13Z MasterOfDisillusionment 431405 Created page with "This is an example GameInfo infobox using the DRUID infobox framework. == Copyable code for use on other content pages == If you want to create pages using this infobox, you can copy the code below. This code is for CONTENT PAGES ONLY. It does not have anything to do with changing what the template supports. A field can be left empty if the data for it is not needed. <syntaxhighlight lang="wikitext" style="overflow: auto;"> {{GameInfo |title= Game Title |image= Image..." wikitext text/x-wiki This is an example GameInfo infobox using the DRUID infobox framework. == Copyable code for use on other content pages == If you want to create pages using this infobox, you can copy the code below. This code is for CONTENT PAGES ONLY. It does not have anything to do with changing what the template supports. A field can be left empty if the data for it is not needed. <syntaxhighlight lang="wikitext" style="overflow: auto;"> {{GameInfo |title= Game Title |image= ImageFileName.png |Release date= Whatever Release Date |Engine= Whatever Engine |Setting/Theme= Theme or Setting 1, Ditto 2, etc. |Latest Version= Whatever Latest Version |Developer(s)= Whatever Developer |Publisher(s)= Whatever Publisher |Mod support= A concise description of modding capabilities. |Notable mods/total conversions= * Mod 1 * Mod 2 etc. |Official website= Whatever Official website |Steam page= [[https://store.steampowered.com/app/2280/DOOM__DOOM_II| Steam Page]] |GOG page= [[https://www.gog.com/en/game/doom_doom_ii| GOG Page]] |ModDB page= [[https://www.gog.com/en/game/doom_doom_ii| ModDB Page]] }} </syntaxhighlight><noinclude>[[Category:Template documentation]]</noinclude> 5b222fe28382a9052db45f689cca0acb03c77a79 369 368 2025-11-04T01:26:24Z MasterOfDisillusionment 431405 wikitext text/x-wiki This is an example GameInfo infobox using the DRUID infobox framework. = Copyable code for use on other content pages = If you want to create pages using this infobox, you can copy the code below. This code is for CONTENT PAGES ONLY. It does not have anything to do with changing what the template supports. A field can be left empty if the data for it is not needed. == Example Code == <syntaxhighlight lang="wikitext" style="overflow: auto;"> {{GameInfo |title= Game Title |image= ImageFileName.png |Release date= Whatever Release Date |Engine= Whatever Engine |Setting/Theme= Theme or Setting 1, Ditto 2, etc. |Latest Version= Whatever Latest Version |Developer(s)= Whatever Developer |Publisher(s)= Whatever Publisher |Mod support= A concise description of modding capabilities. |Notable mods/total conversions= * Mod 1 * Mod 2 etc. |Official website= Whatever Official website |Steam page= [[https://store.steampowered.com/app/2280/DOOM__DOOM_II| Steam Page]] |GOG page= [[https://www.gog.com/en/game/doom_doom_ii| GOG Page]] |ModDB page= [[https://www.gog.com/en/game/doom_doom_ii| ModDB Page]] }} </syntaxhighlight><noinclude>[[Category:Template documentation]]</noinclude> == Clean Version == <syntaxhighlight lang="wikitext" style="overflow: auto;"> {{GameInfo |title= |image= |Release date= |Engine= |Setting/Theme= |Latest Version= |Developer(s)= |Publisher(s)= |Mod support= |Notable mods/total conversions= |Official website= |Steam page= |GOG page= |ModDB page= }} </syntaxhighlight><noinclude>[[Category:Template documentation]]</noinclude> 8433313752b166d7c86222fac23ae34719592e0c Category:Game Information 14 290 370 333 2025-11-04T01:47:48Z MasterOfDisillusionment 431405 wikitext text/x-wiki Relevant Doom engine games are listed on this page. = Classic = The original classics from the 90s are listed here. == [[Doom]] == Doom is a first person shooter action game created by Id Software and published in 1993. == [[Heretic]] == Lorem ipsum dolor sit amet, consectetur adipiscing elit. Sed neque magna, facilisis sed orci convallis, condimentum aliquet sem. Duis porttitor quam tortor, vitae molestie augue porttitor in. Etiam eget eleifend felis, id elementum eros. = Modern = Neo-boomer shooters created using a modified version of the Doom engine (e.g. UZDoom) should be listed here. == [[Malefact]] == Lorem ipsum dolor sit amet, consectetur adipiscing elit. Sed neque magna, facilisis sed orci convallis, condimentum aliquet sem. Duis porttitor quam tortor, vitae molestie augue porttitor in. Etiam eget eleifend felis, id elementum eros. a0decba7a6c40d8c88c429b8fa823d901e5efc37 371 370 2025-11-04T01:49:05Z MasterOfDisillusionment 431405 wikitext text/x-wiki Relevant Doom engine games are listed on this page. = Classic = The original classics from the 90s. == [[Doom]] == Doom is a first person shooter action game created by Id Software and published in 1993. == [[Heretic]] == Lorem ipsum dolor sit amet, consectetur adipiscing elit. Sed neque magna, facilisis sed orci convallis, condimentum aliquet sem. Duis porttitor quam tortor, vitae molestie augue porttitor in. Etiam eget eleifend felis, id elementum eros. = Modern = Neo-boomer shooters created using a modified version of the Doom engine (e.g. UZDoom/GZDoom). == [[Malefact]] == Lorem ipsum dolor sit amet, consectetur adipiscing elit. Sed neque magna, facilisis sed orci convallis, condimentum aliquet sem. Duis porttitor quam tortor, vitae molestie augue porttitor in. Etiam eget eleifend felis, id elementum eros. 8876466ae30fe5fd7e108847d7aaa950aadc6dd6 372 371 2025-11-04T18:34:42Z MasterOfDisillusionment 431405 wikitext text/x-wiki Relevant Doom engine games are listed on this page. = Classic = The original classics from the 90s. == [[Doom]] == Doom is a first person shooter action game created by Id Software and published in 1993. == [[Heretic]] == Lorem ipsum dolor sit amet, consectetur adipiscing elit. Sed neque magna, facilisis sed orci convallis, condimentum aliquet sem. Duis porttitor quam tortor, vitae molestie augue porttitor in. Etiam eget eleifend felis, id elementum eros. = Modern = Neo-boomer shooters created using a modified version of the Doom engine (e.g. UZDoom/GZDoom). == [[Malefact]] == Lorem ipsum dolor sit amet, consectetur adipiscing elit. Sed neque magna, facilisis sed orci convallis, condimentum aliquet sem. Duis porttitor quam tortor, vitae molestie augue porttitor in. Etiam eget eleifend felis, id elementum eros. [[Category:Game Information]] e753721930994b869873ff23172578fa23f10519 File:MalefactCover.png 6 308 375 2025-11-04T19:40:57Z MasterOfDisillusionment 431405 Cover art for Malefact. wikitext text/x-wiki == Summary == Cover art for Malefact. == Licensing == {{License|game}} ce21465945632a1315368bbc5f57f9d8243f7932 Malefact 0 309 376 2025-11-04T19:43:36Z MasterOfDisillusionment 431405 Created page with "{{GameInfo |title= Malefact: Evil Unchained |image= MalefactCover.png |Release date= Unreleased |Engine= [[UZDoom Engine]] |Setting/Theme= Fantasy-horror, satanic, grimdark. |Latest Version= 0.2 (Dev Build only) |Developer(s)= [[GoreMaxxed Productions]] |Publisher(s)= [[GoreMaxxed Productions]] |Mod support= Extensive; uses same tools as other UZDoom engine games |Notable mods/total conversions= |Official website= |Steam page= |GOG page= |ModDB page= }} Malefact..." wikitext text/x-wiki {{GameInfo |title= Malefact: Evil Unchained |image= MalefactCover.png |Release date= Unreleased |Engine= [[UZDoom Engine]] |Setting/Theme= Fantasy-horror, satanic, grimdark. |Latest Version= 0.2 (Dev Build only) |Developer(s)= [[GoreMaxxed Productions]] |Publisher(s)= [[GoreMaxxed Productions]] |Mod support= Extensive; uses same tools as other UZDoom engine games |Notable mods/total conversions= |Official website= |Steam page= |GOG page= |ModDB page= }} Malefact is a fantasy horror first-person shooter currently in development by GoreMaxxed Productions. Built on the UZDoom engine, the game combines classic boomer shooter mechanics with horror elements and dark fantasy themes. The project is led by developer hardcore_gamer, with a demo version expected to release in Q1 2026. 8cf2dff9c6cbe96582456cbe4dd6f952da56d005 377 376 2025-11-04T22:07:52Z MasterOfDisillusionment 431405 wikitext text/x-wiki {{GameInfo |title= Malefact: Evil Unchained |image= MalefactCover.png |Release date= Unreleased |Engine= [[UZDoom Engine]] |Setting/Theme= Fantasy-horror, satanic, grimdark. |Latest Version= 0.2 (Dev Build only) |Developer(s)= [[GoreMaxxed Productions]] |Publisher(s)= [[GoreMaxxed Productions]] |Mod support= Extensive; uses same tools as other UZDoom engine games |Notable mods/total conversions= |Official website= |Steam page= |GOG page= |ModDB page= }} Malefact is a fantasy horror first-person shooter currently in development by GoreMaxxed Productions. Built on the UZDoom engine, the game combines classic boomer shooter mechanics with horror elements and dark fantasy themes. The project is led by developer hardcore_gamer, with a demo version expected to release in Q1 2026. = Gameplay = == Mechanics == The movement system in Malefact uses the same foundation as other Doom engine games but with free-mouse aiming controls in mind. In a departure from most titles in the genre, the game employs slower movement speeds and disables sprinting by default for a more immersive horror experience. Players can only achieve faster movement through temporary power-ups that boost speed for limited durations. A central gameplay element comes in the form of the [[Books of Destruction]], magical tomes that provide access to various spells and abilities. While a book is equipped or selected, both the player character and all enemies freeze in place, creating a tactical pause system that allows for spell selection without the pressure of taking damage. As is tradition with games of this genre, levels feature secret areas, but Malefact handles this slightly differently. Instead of marking specific areas (e.g. 'map sectors') as secrets, each level contains exactly three locked doors requiring corresponding [[Secret Key|secret keys]] hidden throughout the environment. This standardized approach means every level in the base game contains precisely three secrets, providing consistent exploration objectives across all stages. Mappers can still add secrets to their user-made levels the conventional way, however. == Weapons == Malefact features an arsenal of conventional and magical weapons, complemented by the four Books of Destruction. The confirmed weapons include: * Knife - A serial killer-esque Buck knife. * Colt Revolver - Wild West-styled firearm available in single and dual-wielded mode. * Sawed-off Shotgun - Wild West inspired double-barrel sawed-off shotgun. * Stake Gun - Steampunk-inspired rapid-fire stake launcher. * Hellmasher - A demonic club constructed from satanic wood and flesh that launches spectral projectiles which travel a limited distance before self-destructing. * Grim Reaper's Scythe - Unleashes horizontal spreads of energy projectiles while providing health regeneration from defeated enemies. As with projectiles thrown by the Hellmasher, the ones used by the Scythe can only travel a limited distance before self-destructing. * The Books of Destruction serve as the game's magic system, with four books currently planned. Each book contains three distinct spells, though specific abilities remain subject to change during ongoing development. == Enemies == While the final enemy roster remains in development, the completed game will feature between twelve and seventeen distinct enemy types. The upcoming demo has confirmed three enemies that players will encounter: * Sloth: Basic zombie-like fodder enemy. * Craver: Low-to-mid tier melee type. * Warden: Low-tier warrior class enemy capable of both melee strikes and ranged projectile attacks. == Levels == Malefact's campaign structure will consist of four episodes at launch, containing twelve levels each: * Episode 1: The Weeping Know No Joy – Takes place within the Damnatorum and its extensive torture dungeon complexes. * Episode 2: The Fields That Burn – Takes place on the infernal planes and in various hellish interpretations of rural landscapes and locations. * Episode 3: No Flag Flies for the Damned – A series of heavily fortified strongholds protecting the Gate of Hell, representing the most defended territory in the infernal realm. * Episode 4: Holocaust of the Living – Shifts the action to Earth, where Malefact unleashes destruction following his successful escape from Hell and subsequent transformation into a [[Chaos Demon]]. Additional expansion episodes may be developed following the game's release, though no official confirmation exists regarding post-launch content. = Setting and Story = == Plot == Players control Malefact, an undead serial killer condemned to eternal torment within the Damnatorum, Hell's deepest and most horrific dungeon complex reserved exclusively for the most irredeemable sinners. Prior to the game's events, Malefact receives a direct mental communication from God himself, offering unholy powers capable of facilitating escape from his prison of suffering. The divine proposition requires Malefact to wage war against Hell itself in exchange for these abilities. Despite God's acknowledgment that this path will likely result in Malefact's destruction, both parties recognize Malefact's indifference to his own fate. The game begins with Malefact's newfound freedom and his campaign of destruction against Hell's dominion. However, God's scheme backfires spectacularly when Malefact successfully completes his rampage through Hell, escapes to Earth, and initiates Armageddon upon humanity. == Characters == Malefact is currently the only confirmed named character within the game's setting, the title having been earned through infamy rather than serving as his actual identity, which remains unknown. The specifics of his backstory are shrouded in mystery, with little known beyond the fact that he lived and operated as a serial killer in mid-nineteenth-century frontier America before his damnation. = Design = == Music & Audio == Levels feature ambient drones and atmospheric textures as their baseline soundscape, similar to Doom 64 or the PlayStation version of Doom. During scripted sequences or intense combat encounters, the soundtrack may sometimes shift to include instrumental tracks and death metal riffs appropriate to the game's dark thematic elements. Certain levels, like the introductory maps and final boss encounters, exclusively use instrumental tracks. == Visuals & Graphics == The game’s graphical assets are created in the same resolutions as those of its classic counterparts, with low texture resolutions by modern standards, yet without the technical color limitations that constrained developers during the 1990s. The resulting aesthetic is distinctly retro whilst simultaneously benefiting from modern technology. Stylistically, the game’s mood is grim and gloomy, making heavy use of dark colors such as gray and black mixed with warm tones like red and orange. The game’s interpretation of hell is partly inspired by horror films such as the Hellraiser series and Event Horizon, both of which depict their own versions of hell. = Development History = == Early Concepts == Development of Malefact began in late 2023, when [[hardcore_gamer]] started assembling a team to create a horror-focused first-person shooter using the GZDoom engine. Early development faced difficulties in finding suitable talent until artist Stefan joined the project, proving exceptionally well-suited to realizing the game’s grimdark aesthetic. Other hopefuls had submitted their own attempts but were ultimately rejected for failing to meet hardcore_gamer’s creative vision. Later, hardcore_gamer founded GoreMaxxed Productions, the official, non-profit trademark of the development group. Original design concepts included an elaborate spell selection interface resembling a physical spellbook menu system. Complete graphics were produced for this feature before technical limitations within the UZDoom engine necessitated abandonment of the complex interface in favor of the current spellbook item implementation. The tactical pause mechanic that freezes gameplay during spell selection survived this design transition and remains a core gameplay element. == Alpha Demo == The demo version scheduled for Q1 2026 will include two complete levels, several weapons from the main arsenal, three enemy types, and the first Book of Destruction. Access to the demo requires players to join the Discord server and register as beta testers. [[Category:Game Information]] 73632c0f284c0009ad05c22bc5e87f8fd55b01a6 378 377 2025-11-04T22:26:00Z MasterOfDisillusionment 431405 wikitext text/x-wiki {{GameInfo |title= Malefact: Evil Unchained |image= MalefactCover.png |Release date= Unreleased |Engine= [[UZDoom Engine]] |Setting/Theme= Fantasy-horror, satanic, grimdark. |Latest Version= 0.2 (Dev Build only) |Developer(s)= [[GoreMaxxed Productions]] |Publisher(s)= [[GoreMaxxed Productions]] |Mod support= Extensive; uses same tools as other UZDoom engine games |Notable mods/total conversions= |Official website= |Steam page= |GOG page= |ModDB page= }} Malefact is a fantasy horror first-person shooter currently in development by [[GoreMaxxed Productions]]. Built on the UZDoom engine, the game combines classic boomer shooter mechanics with horror elements and dark fantasy themes. The project is led by developer hardcore_gamer, with a demo version expected to release in Q1 2026. = Gameplay = == Mechanics == The movement system in Malefact uses the same foundation as other Doom engine games but with free-mouse aiming controls in mind. In a departure from most titles in the genre, the game employs slower movement speeds and disables sprinting by default for a more immersive horror experience. Players can only achieve faster movement through temporary power-ups that boost speed for limited durations. A central gameplay element comes in the form of the [[Books of Destruction]], magical tomes that provide access to various spells and abilities. While a book is equipped or selected, both the player character and all enemies freeze in place, creating a tactical pause system that allows for spell selection without the pressure of taking damage. As is tradition with games of this genre, levels feature secret areas, but Malefact handles this slightly differently. Instead of marking specific areas (e.g. 'map sectors') as secrets, each level contains exactly three locked doors requiring corresponding [[Secret Key|secret keys]] hidden throughout the environment. This standardized approach means every level in the base game contains precisely three secrets, providing consistent exploration objectives across all stages. Mappers can still add secrets to their user-made levels the conventional way, however. == Weapons == Malefact features an arsenal of conventional and magical weapons, complemented by the four Books of Destruction. The confirmed weapons include: * Knife - A serial killer-esque Buck knife. * Colt Revolver - Wild West-styled firearm available in single and dual-wielded mode. * Sawed-off Shotgun - Wild West inspired double-barrel sawed-off shotgun. * Stake Gun - Steampunk-inspired rapid-fire stake launcher. * Hellmasher - A demonic club constructed from satanic wood and flesh that launches spectral projectiles which travel a limited distance before self-destructing. * Grim Reaper's Scythe - Unleashes horizontal spreads of energy projectiles while providing health regeneration from defeated enemies. As with projectiles thrown by the Hellmasher, the ones used by the Scythe can only travel a limited distance before self-destructing. * The Books of Destruction serve as the game's magic system, with four books currently planned. Each book contains three distinct spells, though specific abilities remain subject to change during ongoing development. == Enemies == While the final enemy roster remains in development, the completed game will feature between twelve and seventeen distinct enemy types. The upcoming demo has confirmed three enemies that players will encounter: * Sloth: Basic zombie-like fodder enemy. * Craver: Low-to-mid tier melee type. * Warden: Low-tier warrior class enemy capable of both melee strikes and ranged projectile attacks. == Levels == Malefact's campaign structure will consist of four episodes at launch, containing twelve levels each: * Episode 1: The Weeping Know No Joy – Takes place within the Damnatorum and its extensive torture dungeon complexes. * Episode 2: The Fields That Burn – Takes place on the infernal planes and in various hellish interpretations of rural landscapes and locations. * Episode 3: No Flag Flies for the Damned – A series of heavily fortified strongholds protecting the Gate of Hell, representing the most defended territory in the infernal realm. * Episode 4: Holocaust of the Living – Shifts the action to Earth, where Malefact unleashes destruction following his successful escape from Hell and subsequent transformation into a [[Chaos Demon]]. Additional expansion episodes may be developed following the game's release, though no official confirmation exists regarding post-launch content. = Setting and Story = == Plot == Players control Malefact, an undead serial killer condemned to eternal torment within the Damnatorum, Hell's deepest and most horrific dungeon complex reserved exclusively for the most irredeemable sinners. Prior to the game's events, Malefact receives a direct mental communication from God himself, offering unholy powers capable of facilitating escape from his prison of suffering. The divine proposition requires Malefact to wage war against Hell itself in exchange for these abilities. Despite God's acknowledgment that this path will likely result in Malefact's destruction, both parties recognize Malefact's indifference to his own fate. The game begins with Malefact's newfound freedom and his campaign of destruction against Hell's dominion. However, God's scheme backfires spectacularly when Malefact successfully completes his rampage through Hell, escapes to Earth, and initiates Armageddon upon humanity. == Characters == Malefact is currently the only confirmed named character within the game's setting, the title having been earned through infamy rather than serving as his actual identity, which remains unknown. The specifics of his backstory are shrouded in mystery, with little known beyond the fact that he lived and operated as a serial killer in mid-nineteenth-century frontier America before his damnation. = Design = == Music & Audio == Levels feature ambient drones and atmospheric textures as their baseline soundscape, similar to Doom 64 or the PlayStation version of Doom. During scripted sequences or intense combat encounters, the soundtrack may sometimes shift to include instrumental tracks and death metal riffs appropriate to the game's dark thematic elements. Certain levels, like the introductory maps and final boss encounters, exclusively use instrumental tracks. == Visuals & Graphics == The game’s graphical assets are created in the same resolutions as those of its classic counterparts, with low texture resolutions by modern standards, yet without the technical color limitations that constrained developers during the 1990s. The resulting aesthetic is distinctly retro whilst simultaneously benefiting from modern technology. Stylistically, the game’s mood is grim and gloomy, making heavy use of dark colors such as gray and black mixed with warm tones like red and orange. The game’s interpretation of hell is partly inspired by horror films such as the Hellraiser series and Event Horizon, both of which depict their own versions of hell. = Development History = == Early Concepts == Development of Malefact began in late 2023, when [[hardcore_gamer]] started assembling a team to create a horror-focused first-person shooter using the GZDoom engine. Early development faced difficulties in finding suitable talent until artist Stefan joined the project, proving exceptionally well-suited to realizing the game’s grimdark aesthetic. Other hopefuls had submitted their own attempts but were ultimately rejected for failing to meet hardcore_gamer’s creative vision. Later, hardcore_gamer founded GoreMaxxed Productions. Original design concepts included an elaborate spell selection interface resembling a physical spellbook menu system. Complete graphics were produced for this feature before technical limitations within the UZDoom engine necessitated abandonment of the complex interface in favor of the current spellbook item implementation. The tactical pause mechanic that freezes gameplay during spell selection survived this design transition and remains a core gameplay element. == Alpha Demo == The demo version scheduled for Q1 2026 will include two complete levels, several weapons from the main arsenal, three enemy types, and the first Book of Destruction. Access to the demo requires players to join the Discord server and register as beta testers. [[Category:Game Information]] 2e979b7010ead66e203ce7200c32bf2dc5940ccc 379 378 2025-11-04T22:26:22Z MasterOfDisillusionment 431405 wikitext text/x-wiki {{GameInfo |title= Malefact: Evil Unchained |image= MalefactCover.png |Release date= Unreleased |Engine= [[UZDoom Engine]] |Setting/Theme= Fantasy-horror, satanic, grimdark. |Latest Version= 0.2 (Dev Build only) |Developer(s)= [[GoreMaxxed Productions]] |Publisher(s)= [[GoreMaxxed Productions]] |Mod support= Extensive; uses same tools as other UZDoom engine games |Notable mods/total conversions= |Official website= |Steam page= |GOG page= |ModDB page= }} Malefact is a fantasy horror first-person shooter currently in development by [[GoreMaxxed Productions]]. Built on the UZDoom engine, the game combines classic boomer shooter mechanics with horror elements and dark fantasy themes. The project is led by developer [[hardcore_gamer]], with a demo version expected to release in Q1 2026. = Gameplay = == Mechanics == The movement system in Malefact uses the same foundation as other Doom engine games but with free-mouse aiming controls in mind. In a departure from most titles in the genre, the game employs slower movement speeds and disables sprinting by default for a more immersive horror experience. Players can only achieve faster movement through temporary power-ups that boost speed for limited durations. A central gameplay element comes in the form of the [[Books of Destruction]], magical tomes that provide access to various spells and abilities. While a book is equipped or selected, both the player character and all enemies freeze in place, creating a tactical pause system that allows for spell selection without the pressure of taking damage. As is tradition with games of this genre, levels feature secret areas, but Malefact handles this slightly differently. Instead of marking specific areas (e.g. 'map sectors') as secrets, each level contains exactly three locked doors requiring corresponding [[Secret Key|secret keys]] hidden throughout the environment. This standardized approach means every level in the base game contains precisely three secrets, providing consistent exploration objectives across all stages. Mappers can still add secrets to their user-made levels the conventional way, however. == Weapons == Malefact features an arsenal of conventional and magical weapons, complemented by the four Books of Destruction. The confirmed weapons include: * Knife - A serial killer-esque Buck knife. * Colt Revolver - Wild West-styled firearm available in single and dual-wielded mode. * Sawed-off Shotgun - Wild West inspired double-barrel sawed-off shotgun. * Stake Gun - Steampunk-inspired rapid-fire stake launcher. * Hellmasher - A demonic club constructed from satanic wood and flesh that launches spectral projectiles which travel a limited distance before self-destructing. * Grim Reaper's Scythe - Unleashes horizontal spreads of energy projectiles while providing health regeneration from defeated enemies. As with projectiles thrown by the Hellmasher, the ones used by the Scythe can only travel a limited distance before self-destructing. * The Books of Destruction serve as the game's magic system, with four books currently planned. Each book contains three distinct spells, though specific abilities remain subject to change during ongoing development. == Enemies == While the final enemy roster remains in development, the completed game will feature between twelve and seventeen distinct enemy types. The upcoming demo has confirmed three enemies that players will encounter: * Sloth: Basic zombie-like fodder enemy. * Craver: Low-to-mid tier melee type. * Warden: Low-tier warrior class enemy capable of both melee strikes and ranged projectile attacks. == Levels == Malefact's campaign structure will consist of four episodes at launch, containing twelve levels each: * Episode 1: The Weeping Know No Joy – Takes place within the Damnatorum and its extensive torture dungeon complexes. * Episode 2: The Fields That Burn – Takes place on the infernal planes and in various hellish interpretations of rural landscapes and locations. * Episode 3: No Flag Flies for the Damned – A series of heavily fortified strongholds protecting the Gate of Hell, representing the most defended territory in the infernal realm. * Episode 4: Holocaust of the Living – Shifts the action to Earth, where Malefact unleashes destruction following his successful escape from Hell and subsequent transformation into a [[Chaos Demon]]. Additional expansion episodes may be developed following the game's release, though no official confirmation exists regarding post-launch content. = Setting and Story = == Plot == Players control Malefact, an undead serial killer condemned to eternal torment within the Damnatorum, Hell's deepest and most horrific dungeon complex reserved exclusively for the most irredeemable sinners. Prior to the game's events, Malefact receives a direct mental communication from God himself, offering unholy powers capable of facilitating escape from his prison of suffering. The divine proposition requires Malefact to wage war against Hell itself in exchange for these abilities. Despite God's acknowledgment that this path will likely result in Malefact's destruction, both parties recognize Malefact's indifference to his own fate. The game begins with Malefact's newfound freedom and his campaign of destruction against Hell's dominion. However, God's scheme backfires spectacularly when Malefact successfully completes his rampage through Hell, escapes to Earth, and initiates Armageddon upon humanity. == Characters == Malefact is currently the only confirmed named character within the game's setting, the title having been earned through infamy rather than serving as his actual identity, which remains unknown. The specifics of his backstory are shrouded in mystery, with little known beyond the fact that he lived and operated as a serial killer in mid-nineteenth-century frontier America before his damnation. = Design = == Music & Audio == Levels feature ambient drones and atmospheric textures as their baseline soundscape, similar to Doom 64 or the PlayStation version of Doom. During scripted sequences or intense combat encounters, the soundtrack may sometimes shift to include instrumental tracks and death metal riffs appropriate to the game's dark thematic elements. Certain levels, like the introductory maps and final boss encounters, exclusively use instrumental tracks. == Visuals & Graphics == The game’s graphical assets are created in the same resolutions as those of its classic counterparts, with low texture resolutions by modern standards, yet without the technical color limitations that constrained developers during the 1990s. The resulting aesthetic is distinctly retro whilst simultaneously benefiting from modern technology. Stylistically, the game’s mood is grim and gloomy, making heavy use of dark colors such as gray and black mixed with warm tones like red and orange. The game’s interpretation of hell is partly inspired by horror films such as the Hellraiser series and Event Horizon, both of which depict their own versions of hell. = Development History = == Early Concepts == Development of Malefact began in late 2023, when [[hardcore_gamer]] started assembling a team to create a horror-focused first-person shooter using the GZDoom engine. Early development faced difficulties in finding suitable talent until artist Stefan joined the project, proving exceptionally well-suited to realizing the game’s grimdark aesthetic. Other hopefuls had submitted their own attempts but were ultimately rejected for failing to meet hardcore_gamer’s creative vision. Later, hardcore_gamer founded GoreMaxxed Productions. Original design concepts included an elaborate spell selection interface resembling a physical spellbook menu system. Complete graphics were produced for this feature before technical limitations within the UZDoom engine necessitated abandonment of the complex interface in favor of the current spellbook item implementation. The tactical pause mechanic that freezes gameplay during spell selection survived this design transition and remains a core gameplay element. == Alpha Demo == The demo version scheduled for Q1 2026 will include two complete levels, several weapons from the main arsenal, three enemy types, and the first Book of Destruction. Access to the demo requires players to join the Discord server and register as beta testers. [[Category:Game Information]] 7edbb171cd52949749be7fcc0b3ab913d03edc5a 380 379 2025-11-04T23:13:19Z MasterOfDisillusionment 431405 wikitext text/x-wiki {{GameInfo |title= Malefact: Evil Unchained |image= MalefactCover.png |Release date= Unreleased |Engine= [[UZDoom Engine]] |Setting/Theme= Fantasy-horror, satanic, grimdark. |Latest Version= 0.2 (Dev Build only) |Developer(s)= [[GoreMaxxed Productions]] |Publisher(s)= [[GoreMaxxed Productions]] |Mod support= Extensive; uses same tools as other UZDoom engine games |Notable mods/total conversions= |Official website= |Steam page= |GOG page= |ModDB page= }} Malefact is a fantasy horror first-person shooter currently in development by [[GoreMaxxed Productions]]. Built on the UZDoom engine, the game combines classic boomer shooter mechanics with horror elements and dark fantasy themes. The project is led by [[hardcore_gamer]], with a demo version expected to release in Q1 2026. = Gameplay = == Mechanics == The movement system in Malefact uses the same foundation as other Doom engine games but with free-mouse aiming controls in mind. In a departure from most titles in the genre, the game employs slower movement speeds and disables sprinting by default for a more immersive horror experience. Players can only achieve faster movement through temporary power-ups that boost speed for limited durations. A central gameplay element comes in the form of the [[Books of Destruction]], magical tomes that provide access to various spells and abilities. While a book is equipped or selected, both the player character and all enemies freeze in place, creating a tactical pause system that allows for spell selection without the pressure of taking damage. As is tradition with games of this genre, levels feature secret areas, but Malefact handles this slightly differently. Instead of marking specific areas (e.g. 'map sectors') as secrets, each level contains exactly three locked doors requiring corresponding [[Secret Key|secret keys]] hidden throughout the environment. This standardized approach means every level in the base game contains precisely three secrets, providing consistent exploration objectives across all stages. Mappers can still add secrets to their user-made levels the conventional way, however. == Weapons == Malefact features an arsenal of conventional and magical weapons, complemented by the four Books of Destruction. The confirmed weapons include: * Knife - A serial killer-esque Buck knife. * Colt Revolver - Wild West-styled firearm available in single and dual-wielded mode. * Sawed-off Shotgun - Wild West inspired double-barrel sawed-off shotgun. * Stake Gun - Steampunk-inspired rapid-fire stake launcher. * Hellmasher - A demonic club constructed from satanic wood and flesh that launches spectral projectiles which travel a limited distance before self-destructing. * Grim Reaper's Scythe - Unleashes horizontal spreads of energy projectiles while providing health regeneration from defeated enemies. As with projectiles thrown by the Hellmasher, the ones used by the Scythe can only travel a limited distance before self-destructing. * The Books of Destruction serve as the game's magic system, with four books currently planned. Each book contains three distinct spells, though specific abilities remain subject to change during ongoing development. == Enemies == While the final enemy roster remains in development, the completed game will feature between twelve and seventeen distinct enemy types. The upcoming demo has confirmed three enemies that players will encounter: * Sloth: Basic zombie-like fodder enemy. * Craver: Low-to-mid tier melee type. * Warden: Low-tier warrior class enemy capable of both melee strikes and ranged projectile attacks. == Levels == Malefact's campaign structure will consist of four episodes at launch, containing twelve levels each: * Episode 1: The Weeping Know No Joy – Takes place within the Damnatorum and its extensive torture dungeon complexes. * Episode 2: The Fields That Burn – Takes place on the infernal planes and in various hellish interpretations of rural landscapes and locations. * Episode 3: No Flag Flies for the Damned – A series of heavily fortified strongholds protecting the Gate of Hell, representing the most defended territory in the infernal realm. * Episode 4: Holocaust of the Living – Shifts the action to Earth, where Malefact unleashes destruction following his successful escape from Hell and subsequent transformation into a [[Chaos Demon]]. Additional expansion episodes may be developed following the game's release, though no official confirmation exists regarding post-launch content. = Setting and Story = == Plot == Players control Malefact, an undead serial killer condemned to eternal torment within the Damnatorum, Hell's deepest and most horrific dungeon complex reserved exclusively for the most irredeemable sinners. Prior to the game's events, Malefact receives a direct mental communication from God himself, offering unholy powers capable of facilitating escape from his prison of suffering. The divine proposition requires Malefact to wage war against Hell itself in exchange for these abilities. Despite God's acknowledgment that this path will likely result in Malefact's destruction, both parties recognize Malefact's indifference to his own fate. The game begins with Malefact's newfound freedom and his campaign of destruction against Hell's dominion. However, God's scheme backfires spectacularly when Malefact successfully completes his rampage through Hell, escapes to Earth, and initiates Armageddon upon humanity. == Characters == Malefact is currently the only confirmed named character within the game's setting, the title having been earned through infamy rather than serving as his actual identity, which remains unknown. The specifics of his backstory are shrouded in mystery, with little known beyond the fact that he lived and operated as a serial killer in mid-nineteenth-century frontier America before his damnation. = Design = == Music & Audio == Levels feature ambient drones and atmospheric textures as their baseline soundscape, similar to Doom 64 or the PlayStation version of Doom. During scripted sequences or intense combat encounters, the soundtrack may sometimes shift to include instrumental tracks and death metal riffs appropriate to the game's dark thematic elements. Certain levels, like the introductory maps and final boss encounters, exclusively use instrumental tracks. == Visuals & Graphics == The game’s graphical assets are created in the same resolutions as those of its classic counterparts, with low texture resolutions by modern standards, yet without the technical color limitations that constrained developers during the 1990s. The resulting aesthetic is distinctly retro whilst simultaneously benefiting from modern technology. Stylistically, the game’s mood is grim and gloomy, making heavy use of dark colors such as gray and black mixed with warm tones like red and orange. The game’s interpretation of hell is partly inspired by horror films such as the Hellraiser series and Event Horizon, both of which depict their own versions of hell. = Development History = == Early Concepts == Development of Malefact began in late 2023, when [[hardcore_gamer]] started assembling a team to create a horror-focused first-person shooter using the GZDoom engine. Early development faced difficulties in finding suitable talent until artist Stefan joined the project, proving exceptionally well-suited to realizing the game’s grimdark aesthetic. Other hopefuls had submitted their own attempts but were ultimately rejected for failing to meet hardcore_gamer’s creative vision. Later, hardcore_gamer founded GoreMaxxed Productions. Original design concepts included an elaborate spell selection interface resembling a physical spellbook menu system. Complete graphics were produced for this feature before technical limitations within the UZDoom engine necessitated abandonment of the complex interface in favor of the current spellbook item implementation. The tactical pause mechanic that freezes gameplay during spell selection survived this design transition and remains a core gameplay element. == Alpha Demo == The demo version scheduled for Q1 2026 will include two complete levels, several weapons from the main arsenal, three enemy types, and the first Book of Destruction. Access to the demo requires players to join the Discord server and register as beta testers. [[Category:Game Information]] e98e55374c609037006d7849f0465226c39966bf 381 380 2025-11-04T23:17:21Z MasterOfDisillusionment 431405 wikitext text/x-wiki {{GameInfo |title= Malefact: Evil Unchained |image= MalefactCover.png |Release date= Unreleased |Engine= [[UZDoom Engine]] |Setting/Theme= Fantasy-horror, satanic, grimdark. |Latest Version= 0.2 (Dev Build only) |Developer(s)= [[GoreMaxxed Productions]] |Publisher(s)= [[GoreMaxxed Productions]] |Mod support= Extensive; uses same tools as other UZDoom engine games |Notable mods/total conversions= |Official website= |Steam page= |GOG page= |ModDB page= }} Malefact is a fantasy horror boomer shooter in development by [[GoreMaxxed Productions]]. The project is led by [[hardcore_gamer]], with a demo version expected to release in Q1 2026. The game is built on the UZDoom engine = Gameplay = == Mechanics == The movement system in Malefact uses the same foundation as other Doom engine games but with free-mouse aiming controls in mind. In a departure from most titles in the genre, the game employs slower movement speeds and disables sprinting by default for a more immersive horror experience. Players can only achieve faster movement through temporary power-ups that boost speed for limited durations. A central gameplay element comes in the form of the [[Books of Destruction]], magical tomes that provide access to various spells and abilities. While a book is equipped or selected, both the player character and all enemies freeze in place, creating a tactical pause system that allows for spell selection without the pressure of taking damage. As is tradition with games of this genre, levels feature secret areas, but Malefact handles this slightly differently. Instead of marking specific areas (e.g. 'map sectors') as secrets, each level contains exactly three locked doors requiring corresponding [[Secret Key|secret keys]] hidden throughout the environment. This standardized approach means every level in the base game contains precisely three secrets, providing consistent exploration objectives across all stages. Mappers can still add secrets to their user-made levels the conventional way, however. == Weapons == Malefact features an arsenal of conventional and magical weapons, complemented by the four Books of Destruction. The confirmed weapons include: * Knife - A serial killer-esque Buck knife. * Colt Revolver - Wild West-styled firearm available in single and dual-wielded mode. * Sawed-off Shotgun - Wild West inspired double-barrel sawed-off shotgun. * Stake Gun - Steampunk-inspired rapid-fire stake launcher. * Hellmasher - A demonic club constructed from satanic wood and flesh that launches spectral projectiles which travel a limited distance before self-destructing. * Grim Reaper's Scythe - Unleashes horizontal spreads of energy projectiles while providing health regeneration from defeated enemies. As with projectiles thrown by the Hellmasher, the ones used by the Scythe can only travel a limited distance before self-destructing. * The Books of Destruction serve as the game's magic system, with four books currently planned. Each book contains three distinct spells, though specific abilities remain subject to change during ongoing development. == Enemies == While the final enemy roster remains in development, the completed game will feature between twelve and seventeen distinct enemy types. The upcoming demo has confirmed three enemies that players will encounter: * Sloth: Basic zombie-like fodder enemy. * Craver: Low-to-mid tier melee type. * Warden: Low-tier warrior class enemy capable of both melee strikes and ranged projectile attacks. == Levels == Malefact's campaign structure will consist of four episodes at launch, containing twelve levels each: * Episode 1: The Weeping Know No Joy – Takes place within the Damnatorum and its extensive torture dungeon complexes. * Episode 2: The Fields That Burn – Takes place on the infernal planes and in various hellish interpretations of rural landscapes and locations. * Episode 3: No Flag Flies for the Damned – A series of heavily fortified strongholds protecting the Gate of Hell, representing the most defended territory in the infernal realm. * Episode 4: Holocaust of the Living – Shifts the action to Earth, where Malefact unleashes destruction following his successful escape from Hell and subsequent transformation into a [[Chaos Demon]]. Additional expansion episodes may be developed following the game's release, though no official confirmation exists regarding post-launch content. = Setting and Story = == Plot == Players control Malefact, an undead serial killer condemned to eternal torment within the Damnatorum, Hell's deepest and most horrific dungeon complex reserved exclusively for the most irredeemable sinners. Prior to the game's events, Malefact receives a direct mental communication from God himself, offering unholy powers capable of facilitating escape from his prison of suffering. The divine proposition requires Malefact to wage war against Hell itself in exchange for these abilities. Despite God's acknowledgment that this path will likely result in Malefact's destruction, both parties recognize Malefact's indifference to his own fate. The game begins with Malefact's newfound freedom and his campaign of destruction against Hell's dominion. However, God's scheme backfires spectacularly when Malefact successfully completes his rampage through Hell, escapes to Earth, and initiates Armageddon upon humanity. == Characters == Malefact is currently the only confirmed named character within the game's setting, the title having been earned through infamy rather than serving as his actual identity, which remains unknown. The specifics of his backstory are shrouded in mystery, with little known beyond the fact that he lived and operated as a serial killer in mid-nineteenth-century frontier America before his damnation. = Design = == Music & Audio == Levels feature ambient drones and atmospheric textures as their baseline soundscape, similar to Doom 64 or the PlayStation version of Doom. During scripted sequences or intense combat encounters, the soundtrack may sometimes shift to include instrumental tracks and death metal riffs appropriate to the game's dark thematic elements. Certain levels, like the introductory maps and final boss encounters, exclusively use instrumental tracks. == Visuals & Graphics == The game’s graphical assets are created in the same resolutions as those of its classic counterparts, with low texture resolutions by modern standards, yet without the technical color limitations that constrained developers during the 1990s. The resulting aesthetic is distinctly retro whilst simultaneously benefiting from modern technology. Stylistically, the game’s mood is grim and gloomy, making heavy use of dark colors such as gray and black mixed with warm tones like red and orange. The game’s interpretation of hell is partly inspired by horror films such as the Hellraiser series and Event Horizon, both of which depict their own versions of hell. = Development History = == Early Concepts == Development of Malefact began in late 2023, when [[hardcore_gamer]] started assembling a team to create a horror-focused first-person shooter using the GZDoom engine. Early development faced difficulties in finding suitable talent until artist Stefan joined the project, proving exceptionally well-suited to realizing the game’s grimdark aesthetic. Other hopefuls had submitted their own attempts but were ultimately rejected for failing to meet hardcore_gamer’s creative vision. Later, hardcore_gamer founded GoreMaxxed Productions. Original design concepts included an elaborate spell selection interface resembling a physical spellbook menu system. Complete graphics were produced for this feature before technical limitations within the UZDoom engine necessitated abandonment of the complex interface in favor of the current spellbook item implementation. The tactical pause mechanic that freezes gameplay during spell selection survived this design transition and remains a core gameplay element. == Alpha Demo == The demo version scheduled for Q1 2026 will include two complete levels, several weapons from the main arsenal, three enemy types, and the first Book of Destruction. Access to the demo requires players to join the Discord server and register as beta testers. [[Category:Game Information]] a6bfd32777f6e3f66a2d9e61c42faafe94679721 382 381 2025-11-04T23:18:01Z MasterOfDisillusionment 431405 wikitext text/x-wiki {{GameInfo |title= Malefact: Evil Unchained |image= MalefactCover.png |Release date= Unreleased |Engine= [[UZDoom Engine]] |Setting/Theme= Fantasy-horror, satanic, grimdark. |Latest Version= 0.2 (Dev Build only) |Developer(s)= [[GoreMaxxed Productions]] |Publisher(s)= [[GoreMaxxed Productions]] |Mod support= Extensive; uses same tools as other UZDoom engine games |Notable mods/total conversions= |Official website= |Steam page= |GOG page= |ModDB page= }} Malefact is a fantasy horror boomer shooter in development by [[GoreMaxxed Productions]]. The project is led by [[hardcore_gamer]], with a demo version expected to release in Q1 2026. The game is built on the UZDoom engine. = Gameplay = == Mechanics == The movement system in Malefact uses the same foundation as other Doom engine games but with free-mouse aiming controls in mind. In a departure from most titles in the genre, the game employs slower movement speeds and disables sprinting by default for a more immersive horror experience. Players can only achieve faster movement through temporary power-ups that boost speed for limited durations. A central gameplay element comes in the form of the [[Books of Destruction]], magical tomes that provide access to various spells and abilities. While a book is equipped or selected, both the player character and all enemies freeze in place, creating a tactical pause system that allows for spell selection without the pressure of taking damage. As is tradition with games of this genre, levels feature secret areas, but Malefact handles this slightly differently. Instead of marking specific areas (e.g. 'map sectors') as secrets, each level contains exactly three locked doors requiring corresponding [[Secret Key|secret keys]] hidden throughout the environment. This standardized approach means every level in the base game contains precisely three secrets, providing consistent exploration objectives across all stages. Mappers can still add secrets to their user-made levels the conventional way, however. == Weapons == Malefact features an arsenal of conventional and magical weapons, complemented by the four Books of Destruction. The confirmed weapons include: * Knife - A serial killer-esque Buck knife. * Colt Revolver - Wild West-styled firearm available in single and dual-wielded mode. * Sawed-off Shotgun - Wild West inspired double-barrel sawed-off shotgun. * Stake Gun - Steampunk-inspired rapid-fire stake launcher. * Hellmasher - A demonic club constructed from satanic wood and flesh that launches spectral projectiles which travel a limited distance before self-destructing. * Grim Reaper's Scythe - Unleashes horizontal spreads of energy projectiles while providing health regeneration from defeated enemies. As with projectiles thrown by the Hellmasher, the ones used by the Scythe can only travel a limited distance before self-destructing. * The Books of Destruction serve as the game's magic system, with four books currently planned. Each book contains three distinct spells, though specific abilities remain subject to change during ongoing development. == Enemies == While the final enemy roster remains in development, the completed game will feature between twelve and seventeen distinct enemy types. The upcoming demo has confirmed three enemies that players will encounter: * Sloth: Basic zombie-like fodder enemy. * Craver: Low-to-mid tier melee type. * Warden: Low-tier warrior class enemy capable of both melee strikes and ranged projectile attacks. == Levels == Malefact's campaign structure will consist of four episodes at launch, containing twelve levels each: * Episode 1: The Weeping Know No Joy – Takes place within the Damnatorum and its extensive torture dungeon complexes. * Episode 2: The Fields That Burn – Takes place on the infernal planes and in various hellish interpretations of rural landscapes and locations. * Episode 3: No Flag Flies for the Damned – A series of heavily fortified strongholds protecting the Gate of Hell, representing the most defended territory in the infernal realm. * Episode 4: Holocaust of the Living – Shifts the action to Earth, where Malefact unleashes destruction following his successful escape from Hell and subsequent transformation into a [[Chaos Demon]]. Additional expansion episodes may be developed following the game's release, though no official confirmation exists regarding post-launch content. = Setting and Story = == Plot == Players control Malefact, an undead serial killer condemned to eternal torment within the Damnatorum, Hell's deepest and most horrific dungeon complex reserved exclusively for the most irredeemable sinners. Prior to the game's events, Malefact receives a direct mental communication from God himself, offering unholy powers capable of facilitating escape from his prison of suffering. The divine proposition requires Malefact to wage war against Hell itself in exchange for these abilities. Despite God's acknowledgment that this path will likely result in Malefact's destruction, both parties recognize Malefact's indifference to his own fate. The game begins with Malefact's newfound freedom and his campaign of destruction against Hell's dominion. However, God's scheme backfires spectacularly when Malefact successfully completes his rampage through Hell, escapes to Earth, and initiates Armageddon upon humanity. == Characters == Malefact is currently the only confirmed named character within the game's setting, the title having been earned through infamy rather than serving as his actual identity, which remains unknown. The specifics of his backstory are shrouded in mystery, with little known beyond the fact that he lived and operated as a serial killer in mid-nineteenth-century frontier America before his damnation. = Design = == Music & Audio == Levels feature ambient drones and atmospheric textures as their baseline soundscape, similar to Doom 64 or the PlayStation version of Doom. During scripted sequences or intense combat encounters, the soundtrack may sometimes shift to include instrumental tracks and death metal riffs appropriate to the game's dark thematic elements. Certain levels, like the introductory maps and final boss encounters, exclusively use instrumental tracks. == Visuals & Graphics == The game’s graphical assets are created in the same resolutions as those of its classic counterparts, with low texture resolutions by modern standards, yet without the technical color limitations that constrained developers during the 1990s. The resulting aesthetic is distinctly retro whilst simultaneously benefiting from modern technology. Stylistically, the game’s mood is grim and gloomy, making heavy use of dark colors such as gray and black mixed with warm tones like red and orange. The game’s interpretation of hell is partly inspired by horror films such as the Hellraiser series and Event Horizon, both of which depict their own versions of hell. = Development History = == Early Concepts == Development of Malefact began in late 2023, when [[hardcore_gamer]] started assembling a team to create a horror-focused first-person shooter using the GZDoom engine. Early development faced difficulties in finding suitable talent until artist Stefan joined the project, proving exceptionally well-suited to realizing the game’s grimdark aesthetic. Other hopefuls had submitted their own attempts but were ultimately rejected for failing to meet hardcore_gamer’s creative vision. Later, hardcore_gamer founded GoreMaxxed Productions. Original design concepts included an elaborate spell selection interface resembling a physical spellbook menu system. Complete graphics were produced for this feature before technical limitations within the UZDoom engine necessitated abandonment of the complex interface in favor of the current spellbook item implementation. The tactical pause mechanic that freezes gameplay during spell selection survived this design transition and remains a core gameplay element. == Alpha Demo == The demo version scheduled for Q1 2026 will include two complete levels, several weapons from the main arsenal, three enemy types, and the first Book of Destruction. Access to the demo requires players to join the Discord server and register as beta testers. [[Category:Game Information]] 77bef51de55dea04bbce1bf1881c6c9afe14fbcd 383 382 2025-11-04T23:19:43Z MasterOfDisillusionment 431405 wikitext text/x-wiki {{GameInfo |title= Malefact: Evil Unchained |image= MalefactCover.png |Release date= Unreleased |Engine= [[UZDoom Engine]] |Setting/Theme= Fantasy-horror, satanic, grimdark. |Latest Version= 0.2 (Dev Build only) |Developer(s)= [[GoreMaxxed Productions]] |Publisher(s)= [[GoreMaxxed Productions]] |Mod support= Extensive; uses same tools as other UZDoom engine games |Notable mods/total conversions= |Official website= |Steam page= |GOG page= |ModDB page= }} Malefact is a fantasy horror boomer shooter in development by [[GoreMaxxed Productions]]. The project is led by [[hardcore_gamer]], with a demo version expected to release in Q1 2026. The game is built on the UZDoom engine. = Gameplay = == Mechanics == The movement system in Malefact uses the same foundation as other Doom engine games but with free-mouse aiming controls in mind. In a departure from most titles in the genre, the game employs slower movement speeds and disables sprinting by default for a more immersive horror experience. Players can only achieve faster movement through temporary power-ups that boost speed for limited durations. A central gameplay element comes in the form of the [[Books of Destruction]], magical tomes that provide access to various spells and abilities. While a book is equipped or selected, both the player character and all enemies freeze in place, creating a tactical pause system that allows for spell selection without the pressure of taking damage. As is tradition with games of this genre, levels feature secret areas, but Malefact handles this slightly differently. Instead of marking specific areas (e.g. 'map sectors') as secrets, each level contains exactly three locked doors requiring corresponding [[Secret Key|secret keys]] hidden throughout the environment. This standardized approach means every level in the base game contains precisely three secrets, providing consistent exploration objectives across all stages. Mappers can still add secrets to their user-made levels the conventional way, however. == Weapons == Malefact features an arsenal of conventional and magical weapons, complemented by the four Books of Destruction. The confirmed weapons include: * Knife - A serial killer-esque Buck knife. * Colt Revolver - Wild West-styled firearm available in single and dual-wielded mode. * Sawed-off Shotgun - Wild West inspired double-barrel sawed-off shotgun. * Stake Gun - Steampunk-inspired rapid-fire stake launcher. * Hellmasher - A demonic club constructed from satanic wood and flesh that launches spectral projectiles which travel a limited distance before self-destructing. * Grim Reaper's Scythe - Unleashes horizontal spreads of energy projectiles while providing health regeneration from defeated enemies. As with projectiles thrown by the Hellmasher, the ones used by the Scythe can only travel a limited distance before self-destructing. * The Books of Destruction serve as the game's magic system, with four books currently planned. Each book contains three distinct spells, though specific abilities remain subject to change during ongoing development. == Enemies == While the final enemy roster remains in development, the completed game will feature between twelve and seventeen distinct enemy types. The upcoming demo has confirmed three enemies that players will encounter: * Sloth: Basic zombie-like fodder enemy. * Craver: Low-to-mid tier melee type. * Warden: Low-tier warrior class enemy capable of both melee strikes and ranged projectile attacks. == Levels == Malefact's campaign structure will consist of four episodes at launch, containing twelve levels each: * Episode 1: The Weeping Know No Joy – Takes place within the Damnatorum and its extensive torture dungeon complexes. * Episode 2: The Fields That Burn – Takes place on the infernal planes and in various hellish interpretations of rural landscapes and locations. * Episode 3: No Flag Flies for the Damned – A series of heavily fortified strongholds protecting the Gate of Hell, representing the most defended territory in the infernal realm. * Episode 4: Holocaust of the Living – Shifts the action to Earth, where Malefact unleashes destruction following his successful escape from Hell and subsequent transformation into a [[Chaos Demon]]. Additional expansion episodes may be developed following the game's release, though no official confirmation exists regarding post-launch content. = Setting and Story = == Plot == Players control Malefact, an undead serial killer condemned to eternal torment within the Damnatorum, Hell's deepest and most horrific dungeon complex reserved exclusively for the most irredeemable sinners. Prior to the game's events, Malefact receives a direct mental communication from God himself, offering unholy powers capable of facilitating escape from his prison of suffering. The divine proposition requires Malefact to wage war against Hell itself in exchange for these abilities. Despite God's acknowledgment that this path will likely result in Malefact's destruction, both parties recognize Malefact's indifference to his own fate. The game begins with Malefact's newfound freedom and his campaign of destruction against Hell's dominion. However, God's scheme backfires spectacularly when Malefact successfully completes his rampage through Hell, escapes to Earth, and initiates Armageddon upon humanity. == Characters == Malefact is currently the only confirmed named character within the game's setting, the title having been earned through infamy rather than serving as his actual identity, which remains unknown. The specifics of his backstory are shrouded in mystery, with little known beyond the fact that he lived and operated as a serial killer in mid-nineteenth-century frontier America before his damnation. = Design = == Music & Audio == Levels feature ambient drones and atmospheric textures as their baseline soundscape, similar to Doom 64 or the PlayStation version of Doom. During scripted sequences or intense combat encounters, the soundtrack may sometimes shift to include instrumental tracks and death metal riffs appropriate to the game's dark thematic elements. Certain levels, like the introductory maps and final boss encounters, exclusively use instrumental tracks. == Visuals & Graphics == The game’s graphical assets are created in the same resolutions as those of its classic counterparts, with low texture resolutions by modern standards, yet without the technical color limitations that constrained developers during the 1990s. The resulting aesthetic is distinctly retro whilst simultaneously benefiting from modern technology. Stylistically, the game’s mood is grim and gloomy, making heavy use of dark colors such as gray and black mixed with warm tones like red and orange. The game’s interpretation of hell is partly inspired by horror films such as the Hellraiser series and Event Horizon, both of which depict their own versions of hell. = Development History = == Early Concepts == Development of Malefact began in late 2023, when [[hardcore_gamer]] started assembling a team to create a horror-focused first-person shooter using the GZDoom engine. Early development faced difficulties in finding suitable talent until artist Stefan joined the project, proving exceptionally well-suited to realizing the game’s grimdark aesthetic. Other hopefuls had submitted their own attempts but were ultimately rejected for failing to meet hardcore_gamer’s creative vision. Later, hardcore_gamer founded [[GoreMaxxed Productions]]. Original design concepts included an elaborate spell selection interface resembling a physical spellbook menu system. Complete graphics were produced for this feature before technical limitations within the UZDoom engine necessitated abandonment of the complex interface in favor of the current spellbook item implementation. The tactical pause mechanic that freezes gameplay during spell selection survived this design transition and remains a core gameplay element. == Alpha Demo == The demo version scheduled for Q1 2026 will include two complete levels, several weapons from the main arsenal, three enemy types, and the first Book of Destruction. Access to the demo requires players to join the Discord server and register as beta testers. [[Category:Game Information]] ab691c348302b5304524566ccff75c605add31bd File:Site-logo.png 6 288 384 314 2025-11-05T15:12:37Z MasterOfDisillusionment 431405 MasterOfDisillusionment uploaded a new version of [[File:Site-logo.png]] wikitext text/x-wiki == Summary == Banner graphic for the hardcoredoom wiki. == Licensing == {{License|permission}} 38ac3a0d2287df992c8ef6c6f21107aa4b5a0639 Category:Tutorials And Guides 14 293 385 332 2025-11-05T20:55:15Z MasterOfDisillusionment 431405 wikitext text/x-wiki If you're a newcomer to modding or mapping using the UZDoom engine, this page contains useful resources for getting started. = Level Editing = Lorem ipsum dolor sit amet, consectetur adipiscing elit. == Sub-Category 1 == Lorem ipsum dolor sit amet, consectetur adipiscing elit. == Sub-Category 2 == Lorem ipsum dolor sit amet, consectetur adipiscing elit. = ZScript & Coding = Lorem ipsum dolor sit amet, consectetur adipiscing elit. == Sub-Category 1 == Lorem ipsum dolor sit amet, consectetur adipiscing elit. == Sub-Category 2 == Lorem ipsum dolor sit amet, consectetur adipiscing elit. = Third Party Guides & Tutorials = == Level Editing & Scripting == Note: While Doom Builder 2 is considered defunct in favor of Ultimate Doom Builder, most general functionality carries over. Just keep in mind that there may be some minor differences when watching older tutorial videos. * [[https://youtube.com/playlist?list=PLQrQ055Wd7p77pBCmTQT6kW-K8Plmw_D-&si=DHhSQQcJ3iT16Czj| Ultimate Doombuilder Tutorials by Bridgeburner]] * [[https://youtube.com/playlist?list=PLCE835098C82D8F24&si=c3VJyO7010AW0_2Z| Doombuilder 2 Tutorials by Chubzdoomer]] * [[https://youtube.com/playlist?list=PLuDCrjOek9njK8hXkZmTxaU8PWzjzGql7&si=5R5NcyAeidk4GPjz| ZDoom ACS Scripting Tutorials by Chubzdoomer]] * [[https://youtube.com/playlist?list=PL-36gm0W-VKl89pw9lUfF36TJ28bjrNUn&si=H8rclwM8wWbkBw8g| GZDoom Zscript Tutorials by DavidXNewton]] 99ef87bc9ae5dfaac424a065ddf0deb8c8d998e1 386 385 2025-11-05T20:56:22Z MasterOfDisillusionment 431405 wikitext text/x-wiki If you're a newcomer to modding or mapping using the UZDoom engine, this page contains useful resources for getting started. = Level Editing = Lorem ipsum dolor sit amet, consectetur adipiscing elit. == Sub-Category 1 == Lorem ipsum dolor sit amet, consectetur adipiscing elit. == Sub-Category 2 == Lorem ipsum dolor sit amet, consectetur adipiscing elit. = ZScript & Coding = Lorem ipsum dolor sit amet, consectetur adipiscing elit. == Sub-Category 1 == Lorem ipsum dolor sit amet, consectetur adipiscing elit. == Sub-Category 2 == Lorem ipsum dolor sit amet, consectetur adipiscing elit. = Third Party Guides & Tutorials = == Level Editing & Scripting == Note: While Doom Builder 2 is considered defunct in favor of Ultimate Doom Builder, most general functionality carries over. Just keep in mind that there may be some minor differences when watching older tutorial videos. * [[https://youtube.com/playlist?list=PLQrQ055Wd7p77pBCmTQT6kW-K8Plmw_D-&si=DHhSQQcJ3iT16Czj| Ultimate Doombuilder Tutorials by Bridgeburner]] * [[https://youtube.com/playlist?list=PLCE835098C82D8F24&si=c3VJyO7010AW0_2Z| Doombuilder 2 Tutorials by Chubzdoomer]] * [[https://youtube.com/playlist?list=PLuDCrjOek9njK8hXkZmTxaU8PWzjzGql7&si=5R5NcyAeidk4GPjz| ZDoom ACS Scripting Tutorials by Chubzdoomer]] * [[https://youtube.com/playlist?list=PL-36gm0W-VKl89pw9lUfF36TJ28bjrNUn&si=H8rclwM8wWbkBw8g| GZDoom Zscript Tutorials by DavidXNewton]] [[Category:Tutorials And Guides]] 614fa0e7b675c10b2b669077d9fe90dc262b335f Category:Boom Tropes 14 294 387 326 2025-11-05T20:57:12Z MasterOfDisillusionment 431405 wikitext text/x-wiki Boom Tropes is an archive of recurring design elements, level setups, and architecture patterns found in classic FPS games and their mods. Besides being fun to browse, the tropes can also be a potentially useful source of inspiration for level designers since these tropes can be easily incorporated into their own designs. = Geometry = Lorem ipsum dolor sit amet, consectetur adipiscing elit. == Sub-Category == Lorem ipsum dolor sit amet, consectetur adipiscing elit. = Detailing = Lorem ipsum dolor sit amet, consectetur adipiscing elit. == Sub-Category == Lorem ipsum dolor sit amet, consectetur adipiscing elit. = Encounter Design = Lorem ipsum dolor sit amet, consectetur adipiscing elit. == Sub-Category == Lorem ipsum dolor sit amet, consectetur adipiscing elit. [[Category:Boom Tropes]] c7c6b513cbb32c0825bf2d9171c2455b4b2619b6 388 387 2025-11-05T20:58:52Z MasterOfDisillusionment 431405 wikitext text/x-wiki Boom Tropes is an archive of recurring design elements, level setups, and architecture patterns found in classic FPS games and their mods. Besides being fun to browse, the tropes can also be a potentially useful source of inspiration for level designers since these tropes can be easily incorporated into their own designs. = Geometry = Lorem ipsum dolor sit amet, consectetur adipiscing elit. == Section 1 == Lorem ipsum dolor sit amet, consectetur adipiscing elit. = Detailing = Lorem ipsum dolor sit amet, consectetur adipiscing elit. == Section 1 == Lorem ipsum dolor sit amet, consectetur adipiscing elit. = Encounter Design = Lorem ipsum dolor sit amet, consectetur adipiscing elit. == Section 1 == Lorem ipsum dolor sit amet, consectetur adipiscing elit. [[Category:Boom Tropes]] 816f10499f84a19cf647ff716e2797a342b36b76 390 388 2025-11-05T21:13:38Z MasterOfDisillusionment 431405 wikitext text/x-wiki Boom Tropes is an archive of recurring design elements, level setups, and architecture patterns found in classic FPS games and their mods. Besides being fun to browse, the tropes can also be a potentially useful source of inspiration for level designers since these tropes can be easily incorporated into their own designs. = Gameplay = Lorem ipsum dolor sit amet, consectetur adipiscing elit. == Encounter Design == Lorem ipsum dolor sit amet, consectetur adipiscing elit. == Layouts & Progression == Lorem ipsum dolor sit amet, consectetur adipiscing elit. == Item Placement == Lorem ipsum dolor sit amet, consectetur adipiscing elit. == Interactives == Lorem ipsum dolor sit amet, consectetur adipiscing elit. = Geometry = Lorem ipsum dolor sit amet, consectetur adipiscing elit. == Section 1 == Lorem ipsum dolor sit amet, consectetur adipiscing elit. = Detailing = Lorem ipsum dolor sit amet, consectetur adipiscing elit. == Section 1 == Lorem ipsum dolor sit amet, consectetur adipiscing elit. [[Category:Boom Tropes]] 36a53678db805b2bb000d9668c53aac3b0c63d6b 391 390 2025-11-05T21:54:47Z MasterOfDisillusionment 431405 wikitext text/x-wiki Boom Tropes is an archive of recurring design elements, level setups, and architecture patterns found in classic FPS games and their mods. Besides being fun to browse, the tropes can also be a potentially useful source of inspiration for level designers since these tropes can be easily incorporated into their own designs. = Gameplay = Tropes related to level layout, mechanics, challenges and encounters, puzzles, player choices. etc. == Encounter Design == Tropes related monster placement and arena design. === Incidental === Straightforward monster placement that doesn't require elaborate setups. * [[Idle Monster]]: A monster that remains inactive until triggered by the player. * [[Door Ambush]]: A monster that waits behind a door. * [[Lift Ambush]]: A monster that waits on top of a platform or lift. === Monster Closets & Traps === More complex encounters involving triggers or scripts. * [[Dropwall Trap]]: A wall or section of a wall that lowers vertically to reveal a new area with an enemy or multiple enemies. * Item 2 == Layouts & Progression == Lorem ipsum dolor sit amet, consectetur adipiscing elit. == Item Placement == Lorem ipsum dolor sit amet, consectetur adipiscing elit. == Interactives == Gameplay tropes involving interactive elements, like doors, switches, teleporters, etc. = Geometry = == Section 1 == Lorem ipsum dolor sit amet, consectetur adipiscing elit. = Detailing = Tropes related to the process of adding visual elements that enhance realism and atmosphere without altering the gameplay structure go here. == Geometric == Map/Level Detail created through level geometry. * Item 1 * Item 2 == Props & Greeble == Map/Level Detail created through placeable props and actors. * Item 1 * Item 2 [[Category:Boom Tropes]] 46e1388ab06223bfe6ad053453996f1b91056b1d 392 391 2025-11-05T21:58:50Z MasterOfDisillusionment 431405 wikitext text/x-wiki Boom Tropes is an archive of recurring design elements, level setups, and architecture patterns found in classic FPS games and their mods. Besides being fun to browse, the tropes can also be a potentially useful source of inspiration for level designers since these tropes can be easily incorporated into their own designs. = Gameplay = Tropes related to level layout, mechanics, challenges and encounters, puzzles, player choices. etc. == Encounter Design == Tropes related monster placement and arena design. === Incidental === Straightforward monster placement that doesn't require elaborate setups. * [[Idle Monster]]: A monster that remains inactive until triggered by the player. * [[Door Ambush]]: A monster that waits behind a door. * [[Lift Ambush]]: A monster that waits on top of a platform or lift. === Monster Closets & Traps === More complex encounters involving triggers or scripts. * [[Dropwall Trap]]: A wall or section of a wall that lowers vertically to reveal a new area with an enemy or multiple enemies. * Item 2 == Layouts & Progression == Lorem ipsum dolor sit amet, consectetur adipiscing elit. == Item Placement == Lorem ipsum dolor sit amet, consectetur adipiscing elit. == Interactives == Gameplay tropes involving interactive elements, like doors, switches, teleporters, etc. = Geometry = == Section 1 == Lorem ipsum dolor sit amet, consectetur adipiscing elit. = Detailing = Tropes related to the process of adding visual elements that enhance realism and atmosphere without altering the gameplay structure go here. == Geometric == Map/Level Detail created through level geometry. * Item 1 * Item 2 == Props & Greeble == Map/Level Detail created through placeable props and actors. * [[Crates & Barrels]]: Storage containers, usually made from wood or alloy. * Item 2 [[Category:Boom Tropes]] f6f00da22a6f7eaf8d7d98c872c085dffd01caa7 396 392 2025-11-05T22:13:47Z MasterOfDisillusionment 431405 wikitext text/x-wiki Boom Tropes is an archive of recurring design elements, level setups, and architecture patterns found in classic FPS games and their mods. Besides being fun to browse, the tropes can also be a potentially useful source of inspiration for level designers since these tropes can be easily incorporated into their own designs. = Gameplay = Tropes related to level layout, mechanics, challenges and encounters, puzzles, player choices. etc. == Encounter Design == Tropes related monster placement and arena design. === Incidental === Straightforward monster placement that doesn't require elaborate setups. * [[Idle Monster]]: A monster that remains inactive until triggered by the player. * [[Door Ambush]]: A monster that waits behind a door. * [[Lift Ambush]]: A monster that waits on top of a platform or lift. === Monster Closets & Traps === More complex encounters involving triggers or scripts. * [[Dropwall Trap]]: A wall or section of a wall that lowers vertically to reveal a new area with an enemy or multiple enemies. * Item 2 == Layouts & Progression == Lorem ipsum dolor sit amet, consectetur adipiscing elit. == Item Placement == Lorem ipsum dolor sit amet, consectetur adipiscing elit. == Interactives == Gameplay tropes involving interactive elements, like doors, switches, teleporters, etc. = Geometry = == Section 1 == Lorem ipsum dolor sit amet, consectetur adipiscing elit. = Detailing = Tropes related to the process of adding visual elements that enhance realism and atmosphere without altering the gameplay structure go here. == Geometric == Map/Level Detail created through level geometry. * Item 1 * Item 2 == Props & Greeble == Map/Level Detail created through placeable props and actors. * [[Crates And Barrels]]: Storage containers, usually made from wood or alloy. * Item 2 [[Category:Boom Tropes]] 342e040ea9bccd7e33c5438d15e7550e07d06d7c Category:Mods And Assets 14 292 389 321 2025-11-05T20:59:04Z MasterOfDisillusionment 431405 wikitext text/x-wiki Pages related to user created mods, TCs, and game assets belong here. = Mods = Mods modify the gameplay of a game and optionally contain new levels and or game assets. == Mod 1 == Lorem ipsum dolor sit amet, consectetur adipiscing elit. == Mod 2 == Lorem ipsum dolor sit amet, consectetur adipiscing elit. = Assets = Assets are used to expand the base game via addition graphics, sound, code, etc. == Assets 1 == Lorem ipsum dolor sit amet, consectetur adipiscing elit. == Assets 2 == Lorem ipsum dolor sit amet, consectetur adipiscing elit. [[Category:Mods And Assets]] 8abfad2906aaac358584d6aa0106a922ef72f0ca Crates And Barrels Detail 0 310 393 2025-11-05T22:13:07Z MasterOfDisillusionment 431405 Created page with "Crates and barrels are storage containers, usually made from wood or metal alloys. The simplicity of these props makes them extremely common not only in shooters but in video games in general, as they provide an easy way to add some greeble to a scene. However, they can also feel like lazy detailing if overused. They are more common in industrial settings. Although crates are considered a prop or greeble trope, it is possible to create them through level geometry, though..." wikitext text/x-wiki Crates and barrels are storage containers, usually made from wood or metal alloys. The simplicity of these props makes them extremely common not only in shooters but in video games in general, as they provide an easy way to add some greeble to a scene. However, they can also feel like lazy detailing if overused. They are more common in industrial settings. Although crates are considered a prop or greeble trope, it is possible to create them through level geometry, though sprites are often used for their simplicity. This depends on the game and the level designer's goals. = Types & Variants = == Static == Purely part of the scenery and cannot be damaged or interacted with. These are often made from geometry, though some games may use models or sprites. == Destructible == Has its own health pool and can be destroyed when it reaches zero. Depending on the game, there may be multiple states depicting various levels of damage, or it may simply be destroyed outright when its HP reaches zero. == Lootable == Can be opened or destroyed to reveal items or pickups. These are less common in classic games, though many user-made mods include them. == Explosive == High-explosive boxes and barrels that blow up when destroyed, dealing damage to nearby actors. These are often colored differently (e.g. red) to call attention to their hazardous nature, but this is not universal. [[Category:Boom Tropes]] 6be009eb15ff3dfa239c6af3d0ea41d3e740b9de 394 393 2025-11-05T22:13:29Z MasterOfDisillusionment 431405 MasterOfDisillusionment renamed page [[Crates & Barrels]] to [[Crates And Barrels]]: Misspelled title wikitext text/x-wiki Crates and barrels are storage containers, usually made from wood or metal alloys. The simplicity of these props makes them extremely common not only in shooters but in video games in general, as they provide an easy way to add some greeble to a scene. However, they can also feel like lazy detailing if overused. They are more common in industrial settings. Although crates are considered a prop or greeble trope, it is possible to create them through level geometry, though sprites are often used for their simplicity. This depends on the game and the level designer's goals. = Types & Variants = == Static == Purely part of the scenery and cannot be damaged or interacted with. These are often made from geometry, though some games may use models or sprites. == Destructible == Has its own health pool and can be destroyed when it reaches zero. Depending on the game, there may be multiple states depicting various levels of damage, or it may simply be destroyed outright when its HP reaches zero. == Lootable == Can be opened or destroyed to reveal items or pickups. These are less common in classic games, though many user-made mods include them. == Explosive == High-explosive boxes and barrels that blow up when destroyed, dealing damage to nearby actors. These are often colored differently (e.g. red) to call attention to their hazardous nature, but this is not universal. [[Category:Boom Tropes]] 6be009eb15ff3dfa239c6af3d0ea41d3e740b9de 399 394 2025-11-05T22:20:18Z MasterOfDisillusionment 431405 wikitext text/x-wiki Crates and barrels are storage containers, usually made from wood or metal alloys. The simplicity of these props makes them extremely common not only in shooters but in video games in general, as they provide an easy way to add some greeble to a scene. However, they can also feel like lazy detailing if overused. They are more common in industrial settings. Although crates are considered a prop or greeble trope, it is possible to create them through level geometry, though sprites are often used for their simplicity. This depends on the game and the level designer's goals. = Types & Variants = == Static == Purely part of the scenery and cannot be damaged or interacted with. These are often made from geometry, though some games may use models or sprites. == Destructible == Has its own health pool and can be destroyed when it reaches zero. Depending on the game, there may be multiple states depicting various levels of damage, or it may simply be destroyed outright when its HP reaches zero. == Lootable == Can be opened or destroyed to reveal items or pickups. These are less common in classic games, though many user-made mods include them. == Explosive == High-explosive boxes and barrels that blow up when destroyed, dealing damage to nearby actors. These are often colored differently (e.g. red) to call attention to their hazardous nature, but this is not universal. = Image Examples = <gallery> TropeBarrels.png| Sprites for Wooden barrels - Source: Heretic's E1M1 TropeCrates.jpg| Crates created from level Geometry - Source: Ultimate Doom's E2M2 </gallery> [[Category:Boom Tropes]] c187e5aad0395b0faf600c8ae107313345107ccd 400 399 2025-11-05T22:33:58Z MasterOfDisillusionment 431405 wikitext text/x-wiki Crates and barrels are storage containers, usually made from wood or metal alloys. The simplicity of these props makes them extremely common, as they provide an easy way to add greeble to a scene. However, they can also feel like lazy detailing if overused. They are more common in industrial settings. Although crates are considered a prop or greeble trope, it is possible to create them through level geometry, though sprites are often used for their simplicity. This depends on the game and the level designer's goals. = Types & Variants = == Static == Purely part of the scenery and cannot be damaged or interacted with. These are often made from geometry, though some games may use models or sprites. == Destructible == Has its own health pool and can be destroyed when it reaches zero. Depending on the game, there may be multiple states depicting various levels of damage, or it may simply be destroyed outright when its HP reaches zero. == Lootable == Can be opened or destroyed to reveal items or pickups. These are less common in classic games, though many user-made mods include them. == Explosive == High-explosive boxes and barrels that blow up when destroyed, dealing damage to nearby actors. These are often colored differently (e.g. red) to call attention to their hazardous nature, but this is not universal. = Image Examples = <gallery> TropeBarrels.png| Sprites for Wooden barrels - Source: Heretic's E1M1 TropeCrates.jpg| Crates created from level Geometry - Source: Ultimate Doom's E2M2 </gallery> [[Category:Boom Tropes]] 72ee8f0bffffd47802d71a16887c41a794878261 Crates & Barrels 0 311 395 2025-11-05T22:13:29Z MasterOfDisillusionment 431405 MasterOfDisillusionment renamed page [[Crates & Barrels]] to [[Crates And Barrels]]: Misspelled title wikitext text/x-wiki #REDIRECT [[Crates And Barrels]] b0877a1d96cbce590ba28e543292469711ec7511 File:TropeCrates.jpg 6 312 397 2025-11-05T22:15:36Z MasterOfDisillusionment 431405 Image example of the crates trope. wikitext text/x-wiki == Summary == Image example of the crates trope. == Licensing == {{License|fairuse}} 826cb241089a16ce26ec656ffeea42d47071c021 File:TropeBarrels.png 6 313 398 2025-11-05T22:16:57Z MasterOfDisillusionment 431405 Image example of the Barrel trope. wikitext text/x-wiki == Summary == Image example of the Barrel trope. == Licensing == {{License|fairuse}} 0dab354bcd4cd9132c0c11689f8295e85c94086b Category:Boom Tropes 14 294 401 396 2025-11-05T22:53:16Z MasterOfDisillusionment 431405 wikitext text/x-wiki Boom Tropes is an archive of recurring design elements, level setups, and architecture patterns found in classic FPS games and their mods. Besides being fun to browse, the tropes can also be a potentially useful source of inspiration for level designers since these tropes can be easily incorporated into their own designs. = Gameplay = Tropes related to level layout, mechanics, challenges and encounters, puzzles, player choices. etc. == Encounter Design == Tropes related monster placement and arena design. === Incidental === Straightforward monster placement that doesn't require elaborate setups. * [[Idle Monster]]: A monster that remains inactive until triggered by the player. * [[Door Ambush]]: A monster that waits behind a door. * [[Lift Ambush]]: A monster that waits on top of a platform or lift. === Monster Closets & Traps === More complex encounters involving triggers or scripts. * [[Dropwall Trap]]: A wall or section of a wall that lowers vertically to reveal a new area with an enemy or multiple enemies. * Item 2 == Layouts == Tropes related to layouts and area design. === Map Layouts === How maps are organized as a whole. * Item 1 * Item 2 === Room Layouts === Layouts for individual areas within a map. * Item 1 * Item 2 == Item Placement == Tropes relating to item placement. = * Item 1 * Item 2 == Interactives == Gameplay tropes involving interactive elements, like doors, switches, teleporters, etc. = Locations & Themes = Common settings and locations of levels. == Settings == * Item 1 * Item 2 == Locations == * Item 1 * Item 2 == Section 1 == Lorem ipsum dolor sit amet, consectetur adipiscing elit. = Detailing = Tropes related to the process of adding visual elements that enhance realism and atmosphere without altering the gameplay structure go here. == Geometric == Map/Level Detail created through level geometry. * Item 1 * Item 2 == Props & Greeble == Map/Level Detail created through placeable props and actors. * [[Crates And Barrels]]: Storage containers, usually made from wood or alloy. * Item 2 [[Category:Boom Tropes]] 7aed20c6ea3c72518109a0c3d87df85e80accd45 402 401 2025-11-05T23:19:49Z MasterOfDisillusionment 431405 wikitext text/x-wiki Boom Tropes is an archive of recurring design elements, level setups, and architecture patterns found in classic FPS games and their mods. Besides being fun to browse, the tropes can also be a potentially useful source of inspiration for level designers since these tropes can be easily incorporated into their own designs. = Gameplay = Tropes related to level layout, mechanics, challenges and encounters, puzzles, player choices. etc. == Encounter Design == Tropes related monster placement and encounters. === Incidental === Straightforward monster placement that doesn't require elaborate setups. * [[Idle Monster]]: A monster that remains inactive until it sees the player. * [[Door Ambush]]: A monster that waits behind a door. * [[Lift Ambush]]: A monster that waits on top of a platform or lift. * [[Turret Monster]]: A projectile or hitscan monster that’s nested onto an elevated space or platform. * [[Alerted Monster]]: Like an idle monster except it’s not deaf; it can be awoken by player’s gunfire without a direct line of sight. === Monster Closets & Traps === More complex encounters involving triggers or scripts. * [[Dropwall Trap]]: A wall or section of a wall that lowers vertically to reveal a new area with an enemy or multiple enemies. * Item 2 == Layouts == Tropes related to map layouts and area design. === Map Layouts === How maps are organized as a whole. * Item 1 * Item 2 === Room Layouts & Geometry === How areas within a map are constructed. * Item 1 * Item 2 == Item Placement == Tropes relating to item placement. = * Item 1 * Item 2 == Interactives == Gameplay tropes involving interactive elements, like doors, switches, teleporters, etc. = Locations & Themes = Common settings and locations of levels. == Settings == * Item 1 * Item 2 == Locations == * Item 1 * Item 2 == Section 1 == Lorem ipsum dolor sit amet, consectetur adipiscing elit. = Detailing = Tropes related to the process of adding visual elements that enhance realism and atmosphere without altering the gameplay structure go here. == Geometric == Map/Level Detail created through level geometry. * Item 1 * Item 2 == Props & Greeble == Map/Level Detail created through placeable props and actors. * [[Crates And Barrels]]: Storage containers, usually made from wood or alloy. * Item 2 [[Category:Boom Tropes]] f81a3458146e99e52878efaa268ea0a107d9c92e 403 402 2025-11-05T23:21:12Z MasterOfDisillusionment 431405 wikitext text/x-wiki Boom Tropes is an archive of recurring design elements, level setups, and architecture patterns found in classic FPS games and their mods. Besides being fun to browse, the tropes can also be a potentially useful source of inspiration for level designers since these tropes can be easily incorporated into their own designs. = Gameplay = == Encounter Design == Tropes related monster placement and encounters. === Incidental === Straightforward monster placement that doesn't require elaborate setups. * [[Idle Monster]]: A monster that remains inactive until it sees the player. * [[Door Ambush]]: A monster that waits behind a door. * [[Lift Ambush]]: A monster that waits on top of a platform or lift. * [[Turret Monster]]: A projectile or hitscan monster that’s nested onto an elevated space or platform. * [[Alerted Monster]]: Like an idle monster except it’s not deaf; it can be awoken by player’s gunfire without a direct line of sight. === Monster Closets & Traps === More complex encounters involving triggers or scripts. * [[Dropwall Trap]]: A wall or section of a wall that lowers vertically to reveal a new area with an enemy or multiple enemies. * Item 2 == Layouts == Tropes related to map layouts and area design. === Map Layouts === How maps are organized as a whole. * Item 1 * Item 2 === Room Layouts & Geometry === How areas within a map are constructed. * Item 1 * Item 2 == Item Placement == Tropes relating to item placement. = * Item 1 * Item 2 == Interactives == Gameplay tropes involving interactive elements, like doors, switches, teleporters, etc. = Locations & Themes = Common settings and locations of levels. == Settings == * Item 1 * Item 2 == Locations == * Item 1 * Item 2 == Section 1 == Lorem ipsum dolor sit amet, consectetur adipiscing elit. = Detailing = Tropes related to the process of adding visual elements that enhance realism and atmosphere without altering the gameplay structure go here. == Geometric == Map/Level Detail created through level geometry. * Item 1 * Item 2 == Props & Greeble == Map/Level Detail created through placeable props and actors. * [[Crates And Barrels]]: Storage containers, usually made from wood or alloy. * Item 2 [[Category:Boom Tropes]] 15372c744e1ba2bd40c0d66f39496c6b4a14729d 404 403 2025-11-05T23:45:21Z MasterOfDisillusionment 431405 wikitext text/x-wiki Boom Tropes is an archive of recurring design elements, level setups, and architecture patterns found in classic FPS games and their mods. Besides being fun to browse, the tropes can also be a potentially useful source of inspiration for level designers since these tropes can be easily incorporated into their own designs. = Gameplay = == Encounter Design == Tropes related monster placement and encounters. === Incidental === Straightforward monster placement that doesn't require elaborate setups. * [[Idle Monster]]: A monster that remains inactive until it sees the player. * [[Door Ambush]]: A monster that waits behind a door. * [[Lift Ambush]]: A monster that waits on top of a platform or lift. * [[Turret Monster]]: A projectile or hitscan monster that’s nested onto an elevated space or platform. * [[Alerted Monster]]: Like an idle monster except it’s not deaf; it can be awoken by player’s gunfire without a direct line of sight. === Monster Closets & Traps === More complex encounters involving triggers or scripts. * [[Dropwall Trap]]: A wall or section of a wall that lowers vertically to reveal a new area with an enemy or multiple enemies. * Item 2 == Layouts & Geometry == Tropes related to map layouts and area design. === Map Layouts === How maps are organized as a whole. * Item 1 * Item 2 === Room Modules === The types of areas commonly used in maps. * [[Hub]]: An area with three or more entry points. * [[Dead-end]]: An area with a single entry point. * [[Corridor]]: An area with two entry points. * [[Couplers]]: Small connector spaces used to bridge areas == Item Placement == Tropes relating to item placement. = * Item 1 * Item 2 == Interactives == Gameplay tropes involving interactive elements, like doors, switches, teleporters, etc. = Locations & Themes = Common settings and locations of levels. == Settings == * Item 1 * Item 2 == Locations == * Item 1 * Item 2 == Section 1 == Lorem ipsum dolor sit amet, consectetur adipiscing elit. = Detailing = Tropes related to the process of adding visual elements that enhance realism and atmosphere without altering the gameplay structure go here. == Geometric == Map/Level Detail created through level geometry. * Item 1 * Item 2 == Props & Greeble == Map/Level Detail created through placeable props and actors. * [[Crates And Barrels]]: Storage containers, usually made from wood or alloy. * Item 2 [[Category:Boom Tropes]] a9d8146a5700d5f5ca2e2039d5524465c2bc8091 425 404 2025-11-08T15:09:18Z MasterOfDisillusionment 431405 Replaced content with " [[Category:Boom Tropes]]" wikitext text/x-wiki [[Category:Boom Tropes]] 055a17c9e7641c544532fe0c7534c4fdfc4e76d4 Category:Tutorials And Guides 14 293 405 386 2025-11-06T22:30:11Z MasterOfDisillusionment 431405 wikitext text/x-wiki If you're a newcomer to modding or mapping using the UZDoom engine, this page contains useful resources for getting started. = Guides & Tutorials = Guides created by our own community. == [[Mapping for Malefact]] == A level design guide for Malefact, geared toward newcomers to the game, written by the game's lead developer and level designer. == Sub-Category 2 == Lorem ipsum dolor sit amet, consectetur adipiscing elit. = ZScript & Coding = Lorem ipsum dolor sit amet, consectetur adipiscing elit. == Sub-Category 1 == Lorem ipsum dolor sit amet, consectetur adipiscing elit. == Sub-Category 2 == Lorem ipsum dolor sit amet, consectetur adipiscing elit. = Third Party Guides & Tutorials = == Level Editing & Scripting == Guides created outside our community. Note: While Doom Builder 2 is considered defunct in favor of Ultimate Doom Builder, most general functionality carries over. Just keep in mind that there may be some minor differences when watching older tutorial videos. * [[https://youtube.com/playlist?list=PLQrQ055Wd7p77pBCmTQT6kW-K8Plmw_D-&si=DHhSQQcJ3iT16Czj| Ultimate Doombuilder Tutorials by Bridgeburner]] * [[https://youtube.com/playlist?list=PLCE835098C82D8F24&si=c3VJyO7010AW0_2Z| Doombuilder 2 Tutorials by Chubzdoomer]] * [[https://youtube.com/playlist?list=PLuDCrjOek9njK8hXkZmTxaU8PWzjzGql7&si=5R5NcyAeidk4GPjz| ZDoom ACS Scripting Tutorials by Chubzdoomer]] * [[https://youtube.com/playlist?list=PL-36gm0W-VKl89pw9lUfF36TJ28bjrNUn&si=H8rclwM8wWbkBw8g| GZDoom Zscript Tutorials by DavidXNewton]] [[Category:Tutorials And Guides]] 2bffcb9f0ef66c28d74c3eb7abffc41f5d8a53b5 406 405 2025-11-06T22:31:21Z MasterOfDisillusionment 431405 wikitext text/x-wiki If you're a newcomer to modding or mapping using the UZDoom engine, this page contains useful resources for getting started. = Guides & Tutorials = Guides created by our own community. == [[Malefact Mapping 101]] == A level design guide for Malefact, geared toward newcomers to the game, written by the game's lead developer and level designer. == Sub-Category 2 == Lorem ipsum dolor sit amet, consectetur adipiscing elit. = ZScript & Coding = Lorem ipsum dolor sit amet, consectetur adipiscing elit. == Sub-Category 1 == Lorem ipsum dolor sit amet, consectetur adipiscing elit. == Sub-Category 2 == Lorem ipsum dolor sit amet, consectetur adipiscing elit. = Third Party Guides & Tutorials = == Level Editing & Scripting == Guides created outside our community. Note: While Doom Builder 2 is considered defunct in favor of Ultimate Doom Builder, most general functionality carries over. Just keep in mind that there may be some minor differences when watching older tutorial videos. * [[https://youtube.com/playlist?list=PLQrQ055Wd7p77pBCmTQT6kW-K8Plmw_D-&si=DHhSQQcJ3iT16Czj| Ultimate Doombuilder Tutorials by Bridgeburner]] * [[https://youtube.com/playlist?list=PLCE835098C82D8F24&si=c3VJyO7010AW0_2Z| Doombuilder 2 Tutorials by Chubzdoomer]] * [[https://youtube.com/playlist?list=PLuDCrjOek9njK8hXkZmTxaU8PWzjzGql7&si=5R5NcyAeidk4GPjz| ZDoom ACS Scripting Tutorials by Chubzdoomer]] * [[https://youtube.com/playlist?list=PL-36gm0W-VKl89pw9lUfF36TJ28bjrNUn&si=H8rclwM8wWbkBw8g| GZDoom Zscript Tutorials by DavidXNewton]] [[Category:Tutorials And Guides]] ed280e312f970ca1c1f19f192e86f315a4b9e447 407 406 2025-11-06T22:31:56Z MasterOfDisillusionment 431405 wikitext text/x-wiki If you're a newcomer to modding or mapping using the UZDoom engine, this page contains useful resources for getting started. = Guides & Tutorials = Guides created by our own community. == [[Malefact Mapping Tutorials]] == A level design guide for Malefact, geared toward newcomers to the game, written by the game's lead developer and level designer. == Sub-Category 2 == Lorem ipsum dolor sit amet, consectetur adipiscing elit. = ZScript & Coding = Lorem ipsum dolor sit amet, consectetur adipiscing elit. == Sub-Category 1 == Lorem ipsum dolor sit amet, consectetur adipiscing elit. == Sub-Category 2 == Lorem ipsum dolor sit amet, consectetur adipiscing elit. = Third Party Guides & Tutorials = == Level Editing & Scripting == Guides created outside our community. Note: While Doom Builder 2 is considered defunct in favor of Ultimate Doom Builder, most general functionality carries over. Just keep in mind that there may be some minor differences when watching older tutorial videos. * [[https://youtube.com/playlist?list=PLQrQ055Wd7p77pBCmTQT6kW-K8Plmw_D-&si=DHhSQQcJ3iT16Czj| Ultimate Doombuilder Tutorials by Bridgeburner]] * [[https://youtube.com/playlist?list=PLCE835098C82D8F24&si=c3VJyO7010AW0_2Z| Doombuilder 2 Tutorials by Chubzdoomer]] * [[https://youtube.com/playlist?list=PLuDCrjOek9njK8hXkZmTxaU8PWzjzGql7&si=5R5NcyAeidk4GPjz| ZDoom ACS Scripting Tutorials by Chubzdoomer]] * [[https://youtube.com/playlist?list=PL-36gm0W-VKl89pw9lUfF36TJ28bjrNUn&si=H8rclwM8wWbkBw8g| GZDoom Zscript Tutorials by DavidXNewton]] [[Category:Tutorials And Guides]] 04ef55c8758dc10f1f249a2a5938ffb8090a2d7b 422 407 2025-11-08T15:05:51Z MasterOfDisillusionment 431405 Replaced content with " [[Category:Tutorials And Guides]]" wikitext text/x-wiki [[Category:Tutorials And Guides]] e6aea71025500896c2384fd32b0dce6c4390df7f Malefact Mapping Tutorials 0 314 408 2025-11-06T22:36:47Z MasterOfDisillusionment 431405 Created page with "This level design guide was written to ease newcomers to Malefact mapping into the process. If you wish to create your own levels for the game, it’s strongly recommended you give them a glance, even if only for those sections covering functionality that is unique to Malefact. Note: The tutorials on this page were written by Malefact’s lead developer and level designer and are thus protected. If you’d like to add your own tutorials or link to those created by othe..." wikitext text/x-wiki This level design guide was written to ease newcomers to Malefact mapping into the process. If you wish to create your own levels for the game, it’s strongly recommended you give them a glance, even if only for those sections covering functionality that is unique to Malefact. Note: The tutorials on this page were written by Malefact’s lead developer and level designer and are thus protected. If you’d like to add your own tutorials or link to those created by others, you can do so on the main tutorial category page. = Table of Contents = == Beginner == * Installing Prerequisites * Sector Creation * Texturing * Lighting * Sector Effects * Actor Placement * Linedef Triggers & Interactive Elements * Ending Your Map * MAPINFO Definition == Advanced == * Scrolling Surfaces * Slopes & Arches * 3D Sectors & Liquids * Patrolling Monsters & Hazards * ACS Scripting * Hub Maps * Ambient Sounds == Design Theory == * Pre-Planning * Area Modules * Monster Closets & Traps * Encounter Design & Pacing d97de9b0c4c7d62f8ecccb619d5d1029df93b512 409 408 2025-11-06T22:41:25Z MasterOfDisillusionment 431405 wikitext text/x-wiki This level design guide was written to ease newcomers to Malefact mapping into the process. If you wish to create your own levels for the game, it’s strongly recommended you give them a glance, even if only for those sections covering functionality that is unique to Malefact. Note: The tutorials on this page were written by Malefact’s lead developer and level designer and are thus protected. If you’d like to add your own tutorials or link to those created by others, you can do so on the [[Category:Tutorials And Guides|main tutorial category page]]. = Table of Contents = == Beginner == * Installing Prerequisites * Sector Creation * Texturing * Lighting * Sector Effects * Actor Placement * Linedef Triggers & Interactive Elements * Ending Your Map * MAPINFO Definition == Advanced == * Scrolling Surfaces * Slopes & Arches * 3D Sectors & Liquids * Patrolling Monsters & Hazards * ACS Scripting * Hub Maps * Ambient Sounds == Design Theory == * Pre-Planning * Area Modules * Monster Closets & Traps * Encounter Design & Pacing [[Category:Tutorials And Guides]] 9fdc4e54d35c572d3cd918182b94624ee5bee9ff 410 409 2025-11-06T22:44:25Z MasterOfDisillusionment 431405 wikitext text/x-wiki This level design guide was written to ease newcomers to Malefact mapping into the process. It was written by hardcore_gamer, who is the lead developer and level designer for the game. If you wish to create your own levels for the game, it’s strongly recommended you give them a glance, even if only for those sections covering functionality that is unique to Malefact. If you’d like to add your own tutorials or link to those created by others, you can do so on the [[Category:Tutorials And Guides|main tutorial category page]]. = Table of Contents = == Beginner == * Installing Prerequisites * Sector Creation * Texturing * Lighting * Sector Effects * Actor Placement * Linedef Triggers & Interactive Elements * Ending Your Map * MAPINFO Definition == Advanced == * Scrolling Surfaces * Slopes & Arches * 3D Sectors & Liquids * Patrolling Monsters & Hazards * ACS Scripting * Hub Maps * Ambient Sounds == Design Theory == * Pre-Planning * Area Modules * Monster Closets & Traps * Encounter Design & Pacing [[Category:Tutorials And Guides]] f19b76c95b3f6db1a1f740983c2823058bf786a8 411 410 2025-11-06T23:23:28Z MasterOfDisillusionment 431405 wikitext text/x-wiki This level design guide was written to ease newcomers to Malefact mapping into the process. It was written by hardcore_gamer, who is the lead developer and level designer for the game. If you wish to create your own levels for the game, it’s strongly recommended you give them a glance, even if only for those sections covering functionality that is unique to Malefact. If you’d like to add your own tutorials or link to those created by others, you can do so on the [[Category:Tutorials And Guides|main tutorial category page]]. = Table of Contents = == Beginner == * Installing Prerequisites * Sector Creation * Texturing * Lighting * Sector Effects * Actor Placement * Linedef Triggers & Interactive Elements * Ending Your Map * MAPINFO Definition == Advanced == * Scrolling Surfaces * Slopes & Arches * 3D Sectors & Liquids * Patrolling Monsters & Hazards * ACS Scripting * Hub Maps * Ambient Sounds == Design Theory == * Pre-Planning * Area Modules * Monster Closets & Traps * Encounter Design & Pacing [[Category:Tutorials And Guides]] fae1ca1a379d1e26c5121d766b2333bc17aaa484 Category:Game Information 14 290 412 372 2025-11-08T14:53:30Z MasterOfDisillusionment 431405 wikitext text/x-wiki Relevant Doom engine games are listed on this page. == Classic == The original classics from the 90s. === [[Doom]] === Doom is a first person shooter action game created by Id Software and published in 1993. === [[Heretic]] === Lorem ipsum dolor sit amet, consectetur adipiscing elit. Sed neque magna, facilisis sed orci convallis, condimentum aliquet sem. Duis porttitor quam tortor, vitae molestie augue porttitor in. Etiam eget eleifend felis, id elementum eros. == Modern == Neo-boomer shooters created using a modified version of the Doom engine (e.g. UZDoom/GZDoom). === [[Malefact]] === Lorem ipsum dolor sit amet, consectetur adipiscing elit. Sed neque magna, facilisis sed orci convallis, condimentum aliquet sem. Duis porttitor quam tortor, vitae molestie augue porttitor in. Etiam eget eleifend felis, id elementum eros. [[Category:Game Information]] 30474b852707329e71aac74864acd275df165d05 413 412 2025-11-08T14:55:05Z MasterOfDisillusionment 431405 wikitext text/x-wiki Relevant Doom engine games are listed on this page. == Classic == The original classics from the 90s. === [[Doom]] === Doom is a first person shooter action game created by Id Software and published in 1993. === [[Heretic]] === Lorem ipsum dolor sit amet, consectetur adipiscing elit. Sed neque magna, facilisis sed orci convallis, condimentum aliquet sem. Duis porttitor quam tortor, vitae molestie augue porttitor in. Etiam eget eleifend felis, id elementum eros. == Modern == Neo-boomer shooters created using a modified version of the Doom engine (e.g. UZDoom/GZDoom). === [[Malefact]] === Malefact is a fantasy horror boomer shooter in development by GoreMaxxed Productions. The project is led by hardcore_gamer, with a demo version expected to release in Q1 2026. The game is built on the UZDoom engine. [[Category:Game Information]] 25f52b29814415ca64783eded2a359e581549f43 415 413 2025-11-08T14:59:58Z MasterOfDisillusionment 431405 Replaced content with " [[Category:Game Information]]" wikitext text/x-wiki [[Category:Game Information]] efb54ab4a9f8778da060c72e038080755aa8afb0 Game Information 0 315 414 2025-11-08T14:59:43Z MasterOfDisillusionment 431405 Created page with "Relevant Doom engine games are listed on this page. == Classic == The original classics from the 90s. === [[Doom]] === Doom is a first person shooter action game created by Id Software and published in 1993. === [[Heretic]] === Lorem ipsum dolor sit amet, consectetur adipiscing elit. Sed neque magna, facilisis sed orci convallis, condimentum aliquet sem. Duis porttitor quam tortor, vitae molestie augue porttitor in. Etiam eget eleifend felis, id elementum eros. ==..." wikitext text/x-wiki Relevant Doom engine games are listed on this page. == Classic == The original classics from the 90s. === [[Doom]] === Doom is a first person shooter action game created by Id Software and published in 1993. === [[Heretic]] === Lorem ipsum dolor sit amet, consectetur adipiscing elit. Sed neque magna, facilisis sed orci convallis, condimentum aliquet sem. Duis porttitor quam tortor, vitae molestie augue porttitor in. Etiam eget eleifend felis, id elementum eros. == Modern == Neo-boomer shooters created using a modified version of the Doom engine (e.g. UZDoom/GZDoom). === [[Malefact]] === Malefact is a fantasy horror boomer shooter in development by GoreMaxxed Productions. The project is led by hardcore_gamer, with a demo version expected to release in Q1 2026. The game is built on the UZDoom engine. [[Category:Game Information]] 25f52b29814415ca64783eded2a359e581549f43 417 414 2025-11-08T15:01:25Z MasterOfDisillusionment 431405 Protected "[[Game Information]]": Game list is currated ([Edit=Allow only administrators] (indefinite) [Rename=Allow only administrators] (indefinite)) wikitext text/x-wiki Relevant Doom engine games are listed on this page. == Classic == The original classics from the 90s. === [[Doom]] === Doom is a first person shooter action game created by Id Software and published in 1993. === [[Heretic]] === Lorem ipsum dolor sit amet, consectetur adipiscing elit. Sed neque magna, facilisis sed orci convallis, condimentum aliquet sem. Duis porttitor quam tortor, vitae molestie augue porttitor in. Etiam eget eleifend felis, id elementum eros. == Modern == Neo-boomer shooters created using a modified version of the Doom engine (e.g. UZDoom/GZDoom). === [[Malefact]] === Malefact is a fantasy horror boomer shooter in development by GoreMaxxed Productions. The project is led by hardcore_gamer, with a demo version expected to release in Q1 2026. The game is built on the UZDoom engine. [[Category:Game Information]] 25f52b29814415ca64783eded2a359e581549f43 MediaWiki:Sidebar 8 289 416 338 2025-11-08T15:00:47Z MasterOfDisillusionment 431405 wikitext text/x-wiki * navigation ** mainpage|mainpage-description ** recentchanges-url|recentchanges ** randompage-url|randompage ** helppage|help-mediawiki * Important Pages ** FAQ|FAQ ** Game Information|Game Information ** Category:Mods And Assets|Mods & Assets ** Category:Tutorials And Guides|Tutorials & Guides ** Category:Boom Tropes|Boom Tropes * wiki.gg ** support:|sidebar-support-wiki ** Wikigg-ticket-link|sidebar-submit-ticket ** wikigg-socialmedia-joinlink|wikigg-socialmedia-jointext-sidebar 9ed96de8b836ba03aa646a38b3b432b42891025f 424 416 2025-11-08T15:08:27Z MasterOfDisillusionment 431405 wikitext text/x-wiki * navigation ** mainpage|mainpage-description ** recentchanges-url|recentchanges ** randompage-url|randompage ** helppage|help-mediawiki * Important Pages ** FAQ|FAQ ** Game Information|Game Information ** Mods And Assets|Mods & Assets ** Tutorials And Guides|Tutorials & Guides ** Boom Tropes|Boom Tropes * wiki.gg ** support:|sidebar-support-wiki ** Wikigg-ticket-link|sidebar-submit-ticket ** wikigg-socialmedia-joinlink|wikigg-socialmedia-jointext-sidebar 896636e884cc8f358767577a3a0af65087a50729 435 424 2025-11-08T16:51:20Z MasterOfDisillusionment 431405 wikitext text/x-wiki * navigation ** mainpage|mainpage-description ** recentchanges-url|recentchanges ** randompage-url|randompage ** helppage|help-mediawiki * Important Pages ** FAQ|FAQ ** Game Information|Game Information ** Mods And Assets|Mods & Assets ** Tutorials And Guides|Tutorials & Guides ** Boom Tropes|Boom Tropes * wiki.gg ** Wiki Syntax|Wiki Syntax ** support:|sidebar-support-wiki ** Wikigg-ticket-link|sidebar-submit-ticket ** wikigg-socialmedia-joinlink|wikigg-socialmedia-jointext-sidebar 035a8da64e589ecc8808229527f4dc286a7946be Hardcore Doom Wiki/pages 0 5 418 346 2025-11-08T15:01:51Z MasterOfDisillusionment 431405 wikitext text/x-wiki {{Main page box/start | title = Useful wiki pages | class = centered-content }} <div class="mp-links columns-2"> * {{MP link| Game Information |link=Game Information |image=Icon GameInformation.png |size=64px }} * {{MP link| Mods & Assets |link=Category:Mods And Assets |image=Icon ModsAndResources.png |size=64px }} * {{MP link| Tutorials & Guides |link=Category:Tutorials And Guides |image=Icon Tutorials.png |size=64px }} * {{MP link| Boom Tropes |link=Category:Boom Tropes |image=Icon BoomTropes.png |size=64px }} </div> {{Main page box/end}}<noinclude>[[Category:Main page boxes]]</noinclude><!-- don't edit this line --> 4454be4b93ffb1a070e9362ac3f50f18b1b8360f 427 418 2025-11-08T15:13:10Z MasterOfDisillusionment 431405 wikitext text/x-wiki {{Main page box/start | title = Useful wiki pages | class = centered-content }} <div class="mp-links columns-2"> * {{MP link| Game Information |link=Game Information |image=Icon GameInformation.png |size=64px }} * {{MP link| Mods & Assets |link=Mods And Assets |image=Icon ModsAndResources.png |size=64px }} * {{MP link| Tutorials & Guides |link=Tutorials And Guides |image=Icon Tutorials.png |size=64px }} * {{MP link| Boom Tropes |link=Boom Tropes |image=Icon BoomTropes.png |size=64px }} </div> {{Main page box/end}}<noinclude>[[Category:Main page boxes]]</noinclude><!-- don't edit this line --> 0162c3bcfbe699ce99d020d52d279175269ec348 Mods And Assets 0 316 419 2025-11-08T15:03:48Z MasterOfDisillusionment 431405 Created page with "Pages related to user created mods, TCs, and game assets belong here. == Mods == Mods modify the gameplay of a game and optionally contain new levels and or game assets. === Mod 1 === Lorem ipsum dolor sit amet, consectetur adipiscing elit. === Mod 2 === Lorem ipsum dolor sit amet, consectetur adipiscing elit. == Assets == Assets are used to expand the base game via addition graphics, sound, code, etc. === Assets 1 === Lorem ipsum dolor sit amet, consectetur adip..." wikitext text/x-wiki Pages related to user created mods, TCs, and game assets belong here. == Mods == Mods modify the gameplay of a game and optionally contain new levels and or game assets. === Mod 1 === Lorem ipsum dolor sit amet, consectetur adipiscing elit. === Mod 2 === Lorem ipsum dolor sit amet, consectetur adipiscing elit. == Assets == Assets are used to expand the base game via addition graphics, sound, code, etc. === Assets 1 === Lorem ipsum dolor sit amet, consectetur adipiscing elit. === Assets 2 === Lorem ipsum dolor sit amet, consectetur adipiscing elit. f5e13f127ca221fc6e5586b93b1a2d75456b2551 421 419 2025-11-08T15:05:10Z MasterOfDisillusionment 431405 wikitext text/x-wiki Pages related to user created mods, TCs, and game assets belong here. == Mods == Mods modify the gameplay of a game and optionally contain new levels and or game assets. === Mod 1 === Lorem ipsum dolor sit amet, consectetur adipiscing elit. === Mod 2 === Lorem ipsum dolor sit amet, consectetur adipiscing elit. == Assets == Assets are used to expand the base game via addition graphics, sound, code, etc. === Assets 1 === Lorem ipsum dolor sit amet, consectetur adipiscing elit. === Assets 2 === Lorem ipsum dolor sit amet, consectetur adipiscing elit. [[Category:Mods And Assets]] 058aa99ccfbfc4a8d19b644d548a96259c9dcc0e 428 421 2025-11-08T15:35:09Z MasterOfDisillusionment 431405 wikitext text/x-wiki User-created content belonging to any of the curated list of Doom engine games is listed here. There are three main parent categories: Hardcore Originals: The official flagship modding projects of hardcoredoom.com. Community Mods: Mods created by the [[hardcoredoom]] community. Endorsed Mods: Third-party mods that are of high enough quality to warrant a shout-out. Custom campaigns that do not include significant changes to gameplay or content are listed in the 'Custom Campaigns' section. == Hardcore Originals == * [[Absolute Doom]] == Community Mods == * Whatever Mod 1 * Whatever Mod 2 == Endorsed Mods == * Whatever Mod 1 * Whatever Mod 2 == Custom Campaigns == === Hardcore Community === * Whatever Campaign 1 * Whatever Campaign 2 === Hardcore Community === * Whatever Campaign 1 * Whatever Campaign 2 [[Category:Mods And Assets]] aefd7564d638b6cc10d8c8ce26a30d7dbb9b9494 429 428 2025-11-08T16:29:40Z MasterOfDisillusionment 431405 wikitext text/x-wiki User-created content belonging to any of the curated list of Doom engine games is listed here. Custom assets for use in your own mods are listed here as well. There are three main parent categories: Hardcore Originals: The official flagship modding projects of hardcoredoom.com. Community Mods: Mods created by the [[hardcoredoom]] community. Endorsed Mods: Third-party mods that are of high enough quality to warrant a shout-out. == Hardcore Originals == === Mods === * [[Absolute Doom]] === Level Packs === * Whatever Campaign 1 * Whatever Campaign 2 === Assets === * Item 1 == Community == === Mods === * Whatever Mod 1 * Whatever Mod 2 === Level Packs === * Whatever Campaign 1 * Whatever Campaign 2 == Endorsed == === Mods === * Whatever Mod 1 * Whatever Mod 2 === Level Packs === * Whatever Campaign 1 * Whatever Campaign 2 == Custom Assets == These assets can be used in your own mods. Be sure to credit the original author. Note that 'in-house' assets created by the hardcoredoom team should not be listed here but rather in the 'Hardcore Originals' section above. === Graphics & Textures === * Item 1 === Music & Audio === * Item 1 === Weapons & Pickups === * Item 1 === Enemies & Monsters === * Item 1 === Props === * Item 1 [[Category:Mods And Assets]] 5eee9d820d61784c2a44bb091541174ce808d522 430 429 2025-11-08T16:32:41Z MasterOfDisillusionment 431405 wikitext text/x-wiki User-created content belonging to any of the curated list of Doom engine games is listed here. Custom assets for use in your own mods are listed here as well. There are three main parent categories: '''Hardcore Originals:''' The official projects of hardcoredoom.com. '''Community Mods:''' Mods created by the [[hardcoredoom]] community. '''Endorsed Mods:''' Third-party mods that were not created by the hardcoredoom community. Keep in mind that this is a curated list; do not create pages for mods or content unless they meet a certain minimum threshold for quality. == Hardcore Originals == === Mods === * [[Absolute Doom]] === Level Packs === * Whatever Campaign 1 * Whatever Campaign 2 === Assets === * Item 1 == Community == === Mods === * Whatever Mod 1 * Whatever Mod 2 === Level Packs === * Whatever Campaign 1 * Whatever Campaign 2 == Endorsed == === Mods === * Whatever Mod 1 * Whatever Mod 2 === Level Packs === * Whatever Campaign 1 * Whatever Campaign 2 == Custom Assets == These assets can be used in your own mods. Be sure to credit the original author. Note that 'in-house' assets created by the hardcoredoom team should not be listed here but rather in the 'Hardcore Originals' section above. === Graphics & Textures === * Item 1 === Music & Audio === * Item 1 === Weapons & Pickups === * Item 1 === Enemies & Monsters === * Item 1 === Props === * Item 1 [[Category:Mods And Assets]] 23f69b1ce7b1187fa44605274ebb31c6f0b86e0c 431 430 2025-11-08T16:35:57Z MasterOfDisillusionment 431405 wikitext text/x-wiki User-created content belonging to any of the curated list of Doom engine games is listed here. Custom assets for use in your own mods are listed here as well. There are three main parent categories: '''Hardcore Originals:''' The official projects of hardcoredoom.com. '''Community Mods''': Mods created by the [[hardcoredoom]] community. '''Endorsed Mods:''' Third-party mods that were not created by the hardcoredoom community. Keep in mind that this is a curated list; do not create pages for mods or content unless they meet a certain minimum threshold for quality. == Hardcore Originals == === Mods === * [[Absolute Doom]] === Level Packs === * Whatever Campaign 1 * Whatever Campaign 2 === Assets === * Item 1 == Community == === Mods === * Whatever Mod 1 * Whatever Mod 2 === Level Packs === * Whatever Campaign 1 * Whatever Campaign 2 == Endorsed == === Mods === * Whatever Mod 1 * Whatever Mod 2 === Level Packs === * Whatever Campaign 1 * Whatever Campaign 2 == Custom Assets == These assets can be used in your own mods. Be sure to credit the original author. Note that 'in-house' assets created by the hardcoredoom team should not be listed here but rather in the 'Hardcore Originals' section above. === Graphics & Textures === * Item 1 === Music & Audio === * Item 1 === Weapons & Pickups === * Item 1 === Enemies & Monsters === * Item 1 === Props === * Item 1 [[Category:Mods And Assets]] d950001646d7116a931b273d4ec0c3609f07c2a1 432 431 2025-11-08T16:38:18Z MasterOfDisillusionment 431405 wikitext text/x-wiki User-created content belonging to any of the curated list of Doom engine games is listed here. Custom assets for use in your own mods are listed here as well. There are three main parent categories: '''Hardcore Originals:''' The official projects of hardcoredoom.com. '''Community Mods''': Mods created by the [[hardcoredoom]] community. '''Endorsed Mods:''' Third-party mods that were not created by the hardcoredoom community. Keep in mind that this is a curated list; do not create pages for mods or content unless they meet a certain minimum threshold for quality. == Hardcore Originals == === Mods === * [[Absolute Doom]] === Level Packs === * Whatever Campaign 1 === Assets === * Item 1 == Community == === Mods === * [[Ultimate Mortal Kombat DOOMXL]] === Level Packs === * Whatever Campaign 1 == Endorsed == === Mods === * Whatever Mod 1 === Level Packs === * Whatever Campaign 1 == Custom Assets == These assets can be used in your own mods. Be sure to credit the original author. Note that 'in-house' assets created by the hardcoredoom team should not be listed here but rather in the 'Hardcore Originals' section above. === Graphics & Textures === * Item 1 === Music & Audio === * Item 1 === Weapons & Pickups === * Item 1 === Enemies & Monsters === * Item 1 === Props === * Item 1 [[Category:Mods And Assets]] bfa98330fef1dd44d12bb558d739f501027680ed Category:Mods And Assets 14 292 420 389 2025-11-08T15:03:56Z MasterOfDisillusionment 431405 Replaced content with " [[Category:Mods And Assets]]" wikitext text/x-wiki [[Category:Mods And Assets]] 944dcdf9c547eda52f3f635f38aa456e03c6cde2 Tutorials And Guides 0 317 423 2025-11-08T15:06:45Z MasterOfDisillusionment 431405 Created page with "If you're a newcomer to modding or mapping using the UZDoom engine, this page contains useful resources for getting started. == Guides & Tutorials == Guides created by our own community. === [[Malefact Mapping Tutorials]] === A level design guide for Malefact, geared toward newcomers to the game, written by the game's lead developer and level designer. === Sub-Category 2 === Lorem ipsum dolor sit amet, consectetur adipiscing elit. == ZScript & Coding == Lorem ipsum..." wikitext text/x-wiki If you're a newcomer to modding or mapping using the UZDoom engine, this page contains useful resources for getting started. == Guides & Tutorials == Guides created by our own community. === [[Malefact Mapping Tutorials]] === A level design guide for Malefact, geared toward newcomers to the game, written by the game's lead developer and level designer. === Sub-Category 2 === Lorem ipsum dolor sit amet, consectetur adipiscing elit. == ZScript & Coding == Lorem ipsum dolor sit amet, consectetur adipiscing elit. === Sub-Category 1 === Lorem ipsum dolor sit amet, consectetur adipiscing elit. === Sub-Category 2 === Lorem ipsum dolor sit amet, consectetur adipiscing elit. == Third Party Guides & Tutorials == === Level Editing & Scripting === Guides created outside our community. Note: While Doom Builder 2 is considered defunct in favor of Ultimate Doom Builder, most general functionality carries over. Just keep in mind that there may be some minor differences when watching older tutorial videos. * [[https://youtube.com/playlist?list=PLQrQ055Wd7p77pBCmTQT6kW-K8Plmw_D-&si=DHhSQQcJ3iT16Czj| Ultimate Doombuilder Tutorials by Bridgeburner]] * [[https://youtube.com/playlist?list=PLCE835098C82D8F24&si=c3VJyO7010AW0_2Z| Doombuilder 2 Tutorials by Chubzdoomer]] * [[https://youtube.com/playlist?list=PLuDCrjOek9njK8hXkZmTxaU8PWzjzGql7&si=5R5NcyAeidk4GPjz| ZDoom ACS Scripting Tutorials by Chubzdoomer]] * [[https://youtube.com/playlist?list=PL-36gm0W-VKl89pw9lUfF36TJ28bjrNUn&si=H8rclwM8wWbkBw8g| GZDoom Zscript Tutorials by DavidXNewton]] [[Category:Tutorials And Guides]] 81c3a23da09ec8bd3c8ab44e023625e4ca17c164 433 423 2025-11-08T16:39:57Z MasterOfDisillusionment 431405 wikitext text/x-wiki If you're a newcomer to modding or mapping using the UZDoom engine, this page contains useful resources for getting started. == Guides & Tutorials == Guides created by our own community. === [[Malefact Mapping Tutorials]] === A level design guide for Malefact, geared toward newcomers to the game, written by the game's lead developer and level designer. === Sub-Category 2 === Lorem ipsum dolor sit amet, consectetur adipiscing elit. == ZScript & Coding == Lorem ipsum dolor sit amet, consectetur adipiscing elit. === Sub-Category 1 === Lorem ipsum dolor sit amet, consectetur adipiscing elit. === Sub-Category 2 === Lorem ipsum dolor sit amet, consectetur adipiscing elit. == Third Party Guides & Tutorials == === Level Editing & Scripting === Guides created outside our community. Note: While Doom Builder 2 is considered defunct in favor of Ultimate Doom Builder, most general functionality carries over. Just keep in mind that there may be some minor differences when watching older tutorial videos. * [[https://youtube.com/playlist?list=PLQrQ055Wd7p77pBCmTQT6kW-K8Plmw_D-&si=DHhSQQcJ3iT16Czj| Ultimate Doombuilder Tutorials by Bridgeburner]] * [[https://youtube.com/playlist?list=PLCE835098C82D8F24&si=c3VJyO7010AW0_2Z| Doombuilder 2 Tutorials by Chubzdoomer]] * [[https://youtube.com/playlist?list=PLuDCrjOek9njK8hXkZmTxaU8PWzjzGql7&si=5R5NcyAeidk4GPjz| ZDoom ACS Scripting Tutorials by Chubzdoomer]] * [[https://youtube.com/playlist?list=PL-36gm0W-VKl89pw9lUfF36TJ28bjrNUn&si=H8rclwM8wWbkBw8g| GZDoom Zscript Tutorials by DavidXNewton]] == Misc/Other == * [[Wiki Syntax]] [[Category:Tutorials And Guides]] a8ea63e80c7d1af06a3b4bc2c4e1a7cdc2091fc8 Boom Tropes 0 318 426 2025-11-08T15:12:01Z MasterOfDisillusionment 431405 Created page with "Boom Tropes is an archive of recurring design elements, level setups, and architecture patterns found in classic FPS games and their mods. Besides being fun to browse, the tropes can also be a potentially useful source of inspiration for level designers since these tropes can be easily incorporated into their own designs. == Gameplay == === Encounter Design === Tropes related monster placement and encounters. ==== Incidental ==== Straightforward monster placement tha..." wikitext text/x-wiki Boom Tropes is an archive of recurring design elements, level setups, and architecture patterns found in classic FPS games and their mods. Besides being fun to browse, the tropes can also be a potentially useful source of inspiration for level designers since these tropes can be easily incorporated into their own designs. == Gameplay == === Encounter Design === Tropes related monster placement and encounters. ==== Incidental ==== Straightforward monster placement that doesn't require elaborate setups. * [[Idle Monster]]: A monster that remains inactive until it sees the player. * [[Door Ambush]]: A monster that waits behind a door. * [[Lift Ambush]]: A monster that waits on top of a platform or lift. * [[Turret Monster]]: A projectile or hitscan monster that’s nested onto an elevated space or platform. * [[Alerted Monster]]: Like an idle monster except it’s not deaf; it can be awoken by player’s gunfire without a direct line of sight. ==== Monster Closets & Traps ==== More complex encounters involving triggers or scripts. * [[Dropwall Trap]]: A wall or section of a wall that lowers vertically to reveal a new area with an enemy or multiple enemies. * Item 2 === Layouts & Geometry === Tropes related to map layouts and area design. ==== Map Layouts ==== How maps are organized as a whole. * Item 1 * Item 2 ==== Room Modules ==== The types of areas commonly used in maps. * [[Hub]]: An area with three or more entry points. * [[Dead-end]]: An area with a single entry point. * [[Corridor]]: An area with two entry points. * [[Couplers]]: Small connector spaces used to bridge areas === Item Placement === Tropes relating to item placement. * Item 1 * Item 2 === Interactives === Gameplay tropes involving interactive elements, like doors, switches, teleporters, etc. === Locations & Themes === Common settings and locations of levels. === Settings & Locations === * Item 1 * Item 2 == Detailing == Tropes related to the process of adding visual elements that enhance realism and atmosphere without altering the gameplay structure go here. === Geometric === Map/Level Detail created through level geometry. * Item 1 * Item 2 === Props & Greeble === Map/Level Detail created through placeable props and actors. * [[Crates And Barrels]]: Storage containers, usually made from wood or alloy. * Item 2 [[Category:Boom Tropes]] b3ed579ad71580d82ef5e4b54f9302dfa35a2c52 Wiki Syntax 0 319 434 2025-11-08T16:50:06Z MasterOfDisillusionment 431405 Created page with "If you want to edit or create your own wiki page, you must use the syntax below. Note that pages must not use the largest header type (e.g. =) since this is automatically applied by the page title. <syntaxhighlight lang="wikitext" style="overflow: auto;"> Headers: = First tier = (Do not use; header 1 is reserved for page titles) == Second tier == === Third tier === ==== Fourth tier ==== ===== Fifth tier ===== ====== Sixth tier ====== Linking: [[Name of target page]]..." wikitext text/x-wiki If you want to edit or create your own wiki page, you must use the syntax below. Note that pages must not use the largest header type (e.g. =) since this is automatically applied by the page title. <syntaxhighlight lang="wikitext" style="overflow: auto;"> Headers: = First tier = (Do not use; header 1 is reserved for page titles) == Second tier == === Third tier === ==== Fourth tier ==== ===== Fifth tier ===== ====== Sixth tier ====== Linking: [[Name of target page]] - This is used for linking to other pages by their page name, e.g. [[My Awesome Game Mod]]. [[Name of target page|The Text to be displayed]] - Ditto except the visible text on the page is different than the name of the page. Numbered list: # Point one # Point two # Point three ## Point three subpoint one # Point four Bullet list: * First point * Second point * Third point ** Third point, first subpoint * Fourth point Spoiler tag (simple): {{spoiler|This is the spoiler text}} Spoiler tag (multi-line): {{spoiler|block=y|Really long spoiler that spans multiple lines Whatever Whatever Etc. }} </syntaxhighlight> [[Category:Tutorials And Guides]] 0df711cbb5e21bb89c072f0e749fc2fb6301310a 437 434 2025-11-08T17:25:58Z MasterOfDisillusionment 431405 wikitext text/x-wiki If you want to edit or create your own wiki page, you must use the syntax below. == General Syntax == <syntaxhighlight lang="wikitext" style="overflow: auto;"> Headers: = First tier = (Do not use; header 1 is reserved for page titles) == Second tier == === Third tier === ==== Fourth tier ==== ===== Fifth tier ===== ====== Sixth tier ====== Linking: [[Name of target page]] - This is used for linking to other pages by their page name, e.g. [[My Awesome Game Mod]]. [[Name of target page|The Text to be displayed]] - Ditto except the visible text on the page is different than the name of the page. Numbered list: # Point one # Point two # Point three ## Point three subpoint one # Point four Bullet list: * First point * Second point * Third point ** Third point, first subpoint * Fourth point Spoiler tag (simple): {{spoiler|This is the spoiler text}} Spoiler tag (multi-line): {{spoiler|block=y|Really long spoiler that spans multiple lines Whatever Whatever Etc. }} </syntaxhighlight> == Infobox Templates == If you need to create a new type of infobox, it's crucial you understand the current method. [[Category:Tutorials And Guides]] 41422d11a23c3dc1ebc8af515eb810d3d6b5528b Template:GameInfo Infobox 10 303 436 367 2025-11-08T17:21:37Z MasterOfDisillusionment 431405 wikitext text/x-wiki <includeonly> {{#invoke:Infobox|main |kind=GameInfo |sep=, |image={{#if:{{{image|}}}|[[File:{{{image}}}{{!}}300px]]}} |sections=General Info, Modding & Community, External Resources |General Info=Release date, Engine, Setting/Theme, Latest Version, Developer(s), Publisher(s) |Modding & Community=Mod support, Notable mods/total conversions |External Resources=Official website, Steam page, GOG page, ModDB page }} </includeonly> <noinclude> {{documentation}} [[Category:Infobox templates]] </noinclude> fb7f130f3afc09b556cd71601453c60d048e5874 Template:ModInfo Infobox 10 320 438 2025-11-08T17:57:20Z MasterOfDisillusionment 431405 Created page with "<includeonly> {{#invoke:Infobox|main |kind=Mod |sep=, |image={{#if:{{{image|}}}|[[File:{{{image}}}{{!}}300px]]}} |sections=General Info, Features, External Links |General Info=Author(s), Release date(s), Latest version, IWAD required, Engine compatibility, Development status |Features=Gameplay Modifications, New Levels, New Graphics, New Music, New Sounds, New Weapons, New Enemies |External Links=Website, ModDB page }} </includeonly> <noinclude> {{documentation}} Ca..." wikitext text/x-wiki <includeonly> {{#invoke:Infobox|main |kind=Mod |sep=, |image={{#if:{{{image|}}}|[[File:{{{image}}}{{!}}300px]]}} |sections=General Info, Features, External Links |General Info=Author(s), Release date(s), Latest version, IWAD required, Engine compatibility, Development status |Features=Gameplay Modifications, New Levels, New Graphics, New Music, New Sounds, New Weapons, New Enemies |External Links=Website, ModDB page }} </includeonly> <noinclude> {{documentation}} [[Category:Infobox templates]] </noinclude> 7b1f4a458aa609e3d6a97b4f3a2ce9bff9e9cbae 440 438 2025-11-08T18:17:30Z MasterOfDisillusionment 431405 wikitext text/x-wiki <includeonly> {{#invoke:Infobox|main |kind=Mod |sep=, |image={{#if:{{{image|}}}|[[File:{{{image}}}{{!}}300px]]}} |sections=General Info, Features, External Links |General Info=Author(s), Release date(s), Latest version, IWAD required, Engine compatibility, Development status |Features=Gameplay Modifications, New Levels, New Graphics, New Music, New Sounds, New Weapons, New Enemies |External Links=Website, ModDB page }} </includeonly> <noinclude> {{documentation}} [[Category:Infobox templates]] </noinclude> 34f22cd9f0400e20183c8a9d09880ff83107e3b2 443 440 2025-11-08T18:27:43Z MasterOfDisillusionment 431405 MasterOfDisillusionment renamed page [[Template:Mod Infobox]] to [[Template:ModInfo Infobox]]: Misspelled title wikitext text/x-wiki <includeonly> {{#invoke:Infobox|main |kind=Mod |sep=, |image={{#if:{{{image|}}}|[[File:{{{image}}}{{!}}300px]]}} |sections=General Info, Features, External Links |General Info=Author(s), Release date(s), Latest version, IWAD required, Engine compatibility, Development status |Features=Gameplay Modifications, New Levels, New Graphics, New Music, New Sounds, New Weapons, New Enemies |External Links=Website, ModDB page }} </includeonly> <noinclude> {{documentation}} [[Category:Infobox templates]] </noinclude> 34f22cd9f0400e20183c8a9d09880ff83107e3b2 445 443 2025-11-08T18:30:22Z MasterOfDisillusionment 431405 wikitext text/x-wiki <includeonly> {{#invoke:Infobox|main |kind=ModInfo |sep=, |image={{#if:{{{image|}}}|[[File:{{{image}}}{{!}}300px]]}} |sections=General Info, Features, External Links |General Info=Author(s), Release Date |Features=Feature 1, Feature 2 |External Links=Official website, ModDB page }} </includeonly> <noinclude> {{documentation}} [[Category:Infobox templates]] </noinclude> f59714d588a9ad1b7b97a0eca6e68d5008a8b862 446 445 2025-11-08T18:38:48Z MasterOfDisillusionment 431405 wikitext text/x-wiki <includeonly> {{#invoke:Infobox|main |kind=ModInfo |sep=, |image={{#if:{{{image|}}}|[[File:{{{image}}}{{!}}300px]]}} |sections=General Info, Features, External Links |General Info=Author, Release Date |Features= Item 1, Item 2 |External Links=Website, ModDB }} </includeonly> <noinclude> {{documentation}} [[Category:Infobox templates]] </noinclude> 4253abb6be13d2508f1c786b065f43555a427e0c 448 446 2025-11-08T18:46:17Z MasterOfDisillusionment 431405 wikitext text/x-wiki <includeonly> {{#invoke:Infobox|main |kind=ModInfo |sep=, |image={{#if:{{{image|}}}|[[File:{{{image}}}{{!}}300px]]}} |sections=General Info, Features, External Links |General Info=Author, Release Date |Features=Item 1, Item 2 |External Links=Website, ModDB }} </includeonly> <noinclude> {{documentation}} [[Category:Infobox templates]] </noinclude> e667acffdff6a8e49981400f2b5422f5de6f5bee 450 448 2025-11-08T18:55:41Z MasterOfDisillusionment 431405 wikitext text/x-wiki <includeonly> {{#invoke:Infobox|main |kind=ModInfo |sep=, |image={{#if:{{{image|}}}|[[File:{{{image}}}{{!}}300px]]}} |sections=General Info, Features, External Links |General Info=Author(s), Release Date, Iwad Required, Engine, Development Status |Features=Gameplay Modifications, New Levels, New Graphics, New Music, New Sounds, New Weapons, New Enemies |External Links=Website, ModDB }} </includeonly> <noinclude> {{documentation}} [[Category:Infobox templates]] </noinclude> 4a6df25a2a084e6a77f54bcb7f1dc1c74f0cdb53 Absolute Doom 0 322 441 2025-11-08T18:17:40Z MasterOfDisillusionment 431405 Created page with "{{Mod |title= Absolute Doom |image= |Author(s)= GoreMaxxedProductions |Release date(s)= TBA |Latest version= |IWAD required= doom2.iwad |Engine compatibility= UZDoom |Development status= Active |Gameplay Modifications= Yes |New Levels= Yes |New Graphics= Yes |New Music= Yes |New Sounds= Yes |New Weapons= Yes |New Enemies= Yes |Website= |ModDB page= }} Absolute Doom is the flagship mod of hardcoredoom.com.It originally started as several separate mods called Hardc..." wikitext text/x-wiki {{Mod |title= Absolute Doom |image= |Author(s)= GoreMaxxedProductions |Release date(s)= TBA |Latest version= |IWAD required= doom2.iwad |Engine compatibility= UZDoom |Development status= Active |Gameplay Modifications= Yes |New Levels= Yes |New Graphics= Yes |New Music= Yes |New Sounds= Yes |New Weapons= Yes |New Enemies= Yes |Website= |ModDB page= }} Absolute Doom is the flagship mod of hardcoredoom.com.It originally started as several separate mods called Hardcore Doom, Definitive Doom, and Project ReTexture, but were eventually merged for sake of simplicity [[Category:Mods And Assets]] b93fe2597384a823e5c1ed7ee621c66e2f5bda96 442 441 2025-11-08T18:26:00Z MasterOfDisillusionment 431405 wikitext text/x-wiki Absolute Doom is the flagship mod of hardcoredoom.com.It originally started as several separate mods called Hardcore Doom, Definitive Doom, and Project ReTexture, but were eventually merged for sake of simplicity [[Category:Mods And Assets]] 595123d70bd001e870bfb8235d9d25f317ffc3d1 447 442 2025-11-08T18:41:00Z MasterOfDisillusionment 431405 wikitext text/x-wiki {{ModInfo |title= |image= |Author= |Release Date= |Item 1= |Item 2= |Website= |ModDB= }} Absolute Doom is the flagship mod of hardcoredoom.com.It originally started as several separate mods called Hardcore Doom, Definitive Doom, and Project ReTexture, but were eventually merged for sake of simplicity [[Category:Mods And Assets]] 2e2d905993ae181b294ea5c76de5aa36c9cace32 449 447 2025-11-08T18:46:23Z MasterOfDisillusionment 431405 wikitext text/x-wiki {{ModInfo |title= Name |image= WhateverImage.png |Author= Goremaxxed Productions |Release Date= |Item 1= Stuff |Item 2= Stuff |Website= Stuff |ModDB= Stuff }} Absolute Doom is the flagship mod of hardcoredoom.com.It originally started as several separate mods called Hardcore Doom, Definitive Doom, and Project ReTexture, but were eventually merged for sake of simplicity [[Category:Mods And Assets]] 8a0a7636fa0b8cb27fcc7dd864dbea7768e91d84 Template:Mod Infobox 10 323 444 2025-11-08T18:27:44Z MasterOfDisillusionment 431405 MasterOfDisillusionment renamed page [[Template:Mod Infobox]] to [[Template:ModInfo Infobox]]: Misspelled title wikitext text/x-wiki #REDIRECT [[Template:ModInfo Infobox]] dc9d26967bb338269ede7dec9d7cbacdff7c25e6 Template:ModInfo Infobox/doc 10 324 451 2025-11-08T19:04:15Z MasterOfDisillusionment 431405 Created page with "This is an example GameInfo infobox using the DRUID infobox framework. = Copyable code for use on other content pages = If you want to create pages using this infobox, you can copy the code below. This code is for CONTENT PAGES ONLY. It does not have anything to do with changing what the template supports. A field can be left empty if the data for it is not needed. == Example Code == <syntaxhighlight lang="wikitext" style="overflow: auto;"> {{ModInfo |title= Mod Tit..." wikitext text/x-wiki This is an example GameInfo infobox using the DRUID infobox framework. = Copyable code for use on other content pages = If you want to create pages using this infobox, you can copy the code below. This code is for CONTENT PAGES ONLY. It does not have anything to do with changing what the template supports. A field can be left empty if the data for it is not needed. == Example Code == <syntaxhighlight lang="wikitext" style="overflow: auto;"> {{ModInfo |title= Mod Title |image= ImageFileName.png |Author= Author name |Release Date= Whatever release date |Iwad Required= The game iwad file needed to load the mod |Engine= Game engine needed for the mod and the latest version know to work |Development Status= Is the mod active or dead? E.g. 'Active, Hiatus, Dead, etc.' |Gameplay Modifications= Yes or No |New Levels= Yes or No (if yes, specify how many) |New Graphics= Yes or No |New Music= Yes or No |New Sounds= Yes or No |New Weapons= Yes or No |New Enemies= Yes or No |Website= Insert team/project website if there is one |ModDB= Insert modDB page if there is one }} </syntaxhighlight><noinclude>[[Category:Template documentation]]</noinclude> == Clean Version == <syntaxhighlight lang="wikitext" style="overflow: auto;"> {{ModInfo |title= |image= |Author= |Release Date= |Iwad Required= |Engine= |Development Status= |Gameplay Modifications= |New Levels= |New Graphics= |New Music= |New Sounds= |New Weapons= |New Enemies= |Website= |ModDB= }} </syntaxhighlight><noinclude>[[Category:Template documentation]]</noinclude> 81b14a055b3c4bd1aa5476dd3a1acbbddd2bb792 Absolute Doom 0 322 452 449 2025-11-08T19:05:43Z MasterOfDisillusionment 431405 wikitext text/x-wiki {{ModInfo |title= Absolute Doom |image= |Author= GoreMaxxed Productions |Release Date= TBA |Iwad Required= doomw.iwad |Engine= UZDoom |Development Status= Active |Gameplay Modifications= Yes |New Levels= Yes |New Graphics= Yes |New Music= Yes |New Sounds= Yes |New Weapons= Yes |New Enemies= Yes |Website= |ModDB= }} Absolute Doom is the flagship mod of hardcoredoom.com.It originally started as several separate mods called Hardcore Doom, Definitive Doom, and Project ReTexture, but were eventually merged for sake of simplicity [[Category:Mods And Assets]] beddc8c2f842ed4add2bfbcccb705179f0578c48 455 452 2025-11-08T20:06:16Z MasterOfDisillusionment 431405 wikitext text/x-wiki Absolute Doom is the flagship mod of hardcoredoom.com. It originally began as several separate mods called Hardcore Doom, Definitive Doom, and Project ReTexture, but these were eventually merged for the sake of simplicity. The mod combines the best levels from each official IWAD into a series of condensed campaigns, adds new weapons and enemies, improves visual presentation with enhanced VFX and other effects, and replaces textures with higher quality re-imaginings. == Overview == === Gameplay === Absolute Doom does not stray too far away from vanilla gameplay, being more akin to an enhanced version of the original with an expanded weapon and monster roster. The mod introduces six new weapons: * Shock Knuckles - Generates splash damage when the player punches enemies. * Revolver - Revolver that offers higher damage per shot than the pistol, * Uber-Shotgun - Quad-barrel version of the SSG. * Assault Rifle - More accurate and deadlier than the chaingun but with lower ammo capacity. * Plasma SMG - Worse spread than the regular plasma gun but does more damage at close and medium rages. * Swarm Missiles - A hand-held swarm missile launcher. Certain vanilla weapons and enemies have likewise been rebalanced slightly: * The pistol has unlimited ammo to ensure the player always has a fallback weapon. * The shotgun fires a bit faster so that it stays useful even after the player collects the SSG. * The BFG now uses a separate ammo type from the plasma rifle. === Graphics & Sound === New visual effects have been added, with the most notable additions being improved explosions, particle effects, and dynamic lighting and screenshake for when the player fires his weapons. Campaign maps have color tinting applied for enhanced atmosphere. The mod incorporates the PlayStation Doom sound effects for most weapons, enemies, and environmental effects. === Levels === All four official IWADs have been condensed into a single 12-map episode consisting of the most memorable and best levels from each campaign. This allows the player to experience the best parts of each campaign without having to grind through the subpar portions. It is possible that additional episodes consisting of condensed versions of other campaigns, such as classic megawads, will be added in future updates. [[Category:Mods And Assets]] [[Category:Mods And Assets]] e1e8d704ca2cb436407a236c1d5abc9a0d5dfcd8 456 455 2025-11-08T20:13:07Z MasterOfDisillusionment 431405 wikitext text/x-wiki {{ModInfo |title= Absolute Doom |image= |Author= GoreMaxxed Productions |Release Date= TBA |Iwad Required= doom2.iwad |Engine= UZDoom |Development Status= |Gameplay Modifications= |New Levels= |New Graphics= |New Music= |New Sounds= |New Weapons= |New Enemies= |Website= |ModDB= }} Absolute Doom is the flagship mod of hardcoredoom.com. It originally began as several separate mods called Hardcore Doom, Definitive Doom, and Project ReTexture, but these were eventually merged for the sake of simplicity. The mod combines the best levels from each official IWAD into a series of condensed campaigns, adds new weapons and enemies, improves visual presentation with enhanced VFX and other effects, and replaces textures with higher quality re-imaginings. == Overview == === Gameplay === Absolute Doom does not stray too far away from vanilla gameplay, being more akin to an enhanced version of the original with an expanded weapon and monster roster. The mod introduces six new weapons: * Shock Knuckles - Generates splash damage when the player punches enemies. * Revolver - Revolver that offers higher damage per shot than the pistol, * Uber-Shotgun - Quad-barrel version of the SSG. * Assault Rifle - More accurate and deadlier than the chaingun but with lower ammo capacity. * Plasma SMG - Worse spread than the regular plasma gun but does more damage at close and medium rages. * Swarm Missiles - A hand-held swarm missile launcher. Certain vanilla weapons and enemies have likewise been rebalanced slightly: * The pistol has unlimited ammo to ensure the player always has a fallback weapon. * The shotgun fires a bit faster so that it stays useful even after the player collects the SSG. * The BFG now uses a separate ammo type from the plasma rifle. === Graphics & Sound === New visual effects have been added, with the most notable additions being improved explosions, particle effects, and dynamic lighting and screenshake for when the player fires his weapons. Campaign maps have color tinting applied for enhanced atmosphere. The mod incorporates the PlayStation Doom sound effects for most weapons, enemies, and environmental effects. === Levels === All four official IWADs have been condensed into a single 12-map episode consisting of the most memorable and best levels from each campaign. This allows the player to experience the best parts of each campaign without having to grind through the subpar portions. It is possible that additional episodes consisting of condensed versions of other campaigns, such as classic megawads, will be added in future updates. [[Category:Mods And Assets]] [[Category:Mods And Assets]] c0fb90c5e8ac18bfbefceb8823e34e00552c89a3 458 456 2025-11-08T20:18:26Z MasterOfDisillusionment 431405 wikitext text/x-wiki {{ModInfo Infobox |title= Absolute Doom |image= |Author= GoreMaxxed Productions |Release Date= TBA |Iwad Required= doom2.iwad |Engine= UZDoom |Development Status= |Gameplay Modifications= |New Levels= |New Graphics= |New Music= |New Sounds= |New Weapons= |New Enemies= |Website= |ModDB= }} Absolute Doom is the flagship mod of hardcoredoom.com. It originally began as several separate mods called Hardcore Doom, Definitive Doom, and Project ReTexture, but these were eventually merged for the sake of simplicity. The mod combines the best levels from each official IWAD into a series of condensed campaigns, adds new weapons and enemies, improves visual presentation with enhanced VFX and other effects, and replaces textures with higher quality re-imaginings. == Overview == === Gameplay === Absolute Doom does not stray too far away from vanilla gameplay, being more akin to an enhanced version of the original with an expanded weapon and monster roster. The mod introduces six new weapons: * Shock Knuckles - Generates splash damage when the player punches enemies. * Revolver - Revolver that offers higher damage per shot than the pistol, * Uber-Shotgun - Quad-barrel version of the SSG. * Assault Rifle - More accurate and deadlier than the chaingun but with lower ammo capacity. * Plasma SMG - Worse spread than the regular plasma gun but does more damage at close and medium rages. * Swarm Missiles - A hand-held swarm missile launcher. Certain vanilla weapons and enemies have likewise been rebalanced slightly: * The pistol has unlimited ammo to ensure the player always has a fallback weapon. * The shotgun fires a bit faster so that it stays useful even after the player collects the SSG. * The BFG now uses a separate ammo type from the plasma rifle. === Graphics & Sound === New visual effects have been added, with the most notable additions being improved explosions, particle effects, and dynamic lighting and screenshake for when the player fires his weapons. Campaign maps have color tinting applied for enhanced atmosphere. The mod incorporates the PlayStation Doom sound effects for most weapons, enemies, and environmental effects. === Levels === All four official IWADs have been condensed into a single 12-map episode consisting of the most memorable and best levels from each campaign. This allows the player to experience the best parts of each campaign without having to grind through the subpar portions. It is possible that additional episodes consisting of condensed versions of other campaigns, such as classic megawads, will be added in future updates. [[Category:Mods And Assets]] [[Category:Mods And Assets]] 6ac193bf1239bfdeb0c4bb4b0738a9a9281b07e1 459 458 2025-11-08T20:20:44Z MasterOfDisillusionment 431405 wikitext text/x-wiki {{ModInfo Infobox |title= Absolute Doom |image= |Author= GoreMaxxed Productions |Release Date= TBA |Iwad Required= doom2.iwad |Engine= UZDoom |Development Status= |Gameplay Modifications= |New Levels= Yes (4+ episodes) |New Graphics= Yes |New Music= Yes |New Sounds= Yes |New Weapons= Yes |New Enemies= Yes |Website= |ModDB= }} Absolute Doom is the flagship mod of hardcoredoom.com. It originally began as several separate mods called Hardcore Doom, Definitive Doom, and Project ReTexture, but these were eventually merged for the sake of simplicity. The mod combines the best levels from each official IWAD into a series of condensed campaigns, adds new weapons and enemies, improves visual presentation with enhanced VFX and other effects, and replaces textures with higher quality re-imaginings. == Overview == === Gameplay === Absolute Doom does not stray too far away from vanilla gameplay, being more akin to an enhanced version of the original with an expanded weapon and monster roster. The mod introduces six new weapons: * Shock Knuckles - Generates splash damage when the player punches enemies. * Revolver - Revolver that offers higher damage per shot than the pistol, * Uber-Shotgun - Quad-barrel version of the SSG. * Assault Rifle - More accurate and deadlier than the chaingun but with lower ammo capacity. * Plasma SMG - Worse spread than the regular plasma gun but does more damage at close and medium rages. * Swarm Missiles - A hand-held swarm missile launcher. Certain vanilla weapons and enemies have likewise been rebalanced slightly: * The pistol has unlimited ammo to ensure the player always has a fallback weapon. * The shotgun fires a bit faster so that it stays useful even after the player collects the SSG. * The BFG now uses a separate ammo type from the plasma rifle. === Graphics & Sound === New visual effects have been added, with the most notable additions being improved explosions, particle effects, and dynamic lighting and screenshake for when the player fires his weapons. Campaign maps have color tinting applied for enhanced atmosphere. The mod incorporates the PlayStation Doom sound effects for most weapons, enemies, and environmental effects. === Levels === All four official IWADs have been condensed into a single 12-map episode consisting of the most memorable and best levels from each campaign. This allows the player to experience the best parts of each campaign without having to grind through the subpar portions. It is possible that additional episodes consisting of condensed versions of other campaigns, such as classic megawads, will be added in future updates. [[Category:Mods And Assets]] [[Category:Mods And Assets]] ef75fea519428350ad8d1e05233fbb5c0dd542f8 460 459 2025-11-08T20:26:51Z MasterOfDisillusionment 431405 wikitext text/x-wiki {{ModInfo Infobox |title= Absolute Doom |image= DoomCover.jpg |Author= GoreMaxxed Productions |Release Date= TBA |Iwad Required= doom2.iwad |Engine= UZDoom |Development Status= |Gameplay Modifications= |New Levels= Yes (4+ episodes) |New Graphics= Yes |New Music= Yes |New Sounds= Yes |New Weapons= Yes |New Enemies= Yes |Website= |ModDB= }} Absolute Doom is the flagship mod of hardcoredoom.com. It originally began as several separate mods called Hardcore Doom, Definitive Doom, and Project ReTexture, but these were eventually merged for the sake of simplicity. The mod combines the best levels from each official IWAD into a series of condensed campaigns, adds new weapons and enemies, improves visual presentation with enhanced VFX and other effects, and replaces textures with higher quality re-imaginings. == Overview == === Gameplay === Absolute Doom does not stray too far away from vanilla gameplay, being more akin to an enhanced version of the original with an expanded weapon and monster roster. The mod introduces six new weapons: * Shock Knuckles - Generates splash damage when the player punches enemies. * Revolver - Revolver that offers higher damage per shot than the pistol, * Uber-Shotgun - Quad-barrel version of the SSG. * Assault Rifle - More accurate and deadlier than the chaingun but with lower ammo capacity. * Plasma SMG - Worse spread than the regular plasma gun but does more damage at close and medium rages. * Swarm Missiles - A hand-held swarm missile launcher. Certain vanilla weapons and enemies have likewise been rebalanced slightly: * The pistol has unlimited ammo to ensure the player always has a fallback weapon. * The shotgun fires a bit faster so that it stays useful even after the player collects the SSG. * The BFG now uses a separate ammo type from the plasma rifle. === Graphics & Sound === New visual effects have been added, with the most notable additions being improved explosions, particle effects, and dynamic lighting and screenshake for when the player fires his weapons. Campaign maps have color tinting applied for enhanced atmosphere. The mod incorporates the PlayStation Doom sound effects for most weapons, enemies, and environmental effects. === Levels === All four official IWADs have been condensed into a single 12-map episode consisting of the most memorable and best levels from each campaign. This allows the player to experience the best parts of each campaign without having to grind through the subpar portions. It is possible that additional episodes consisting of condensed versions of other campaigns, such as classic megawads, will be added in future updates. [[Category:Mods And Assets]] [[Category:Mods And Assets]] 5fdb3b8437cb63712239c4510a07820e96f2e717 462 460 2025-11-08T21:07:00Z MasterOfDisillusionment 431405 wikitext text/x-wiki {{ModInfo Infobox |title= Absolute Doom |image= DoomCover.jpg |Author= GoreMaxxed Productions |Release Date= TBA |Iwad Required= doom2.iwad |Engine= UZDoom |Development Status= |Gameplay Modifications= |New Levels= Yes (4+ episodes) |New Graphics= Yes |New Music= Yes |New Sounds= Yes |New Weapons= Yes |New Enemies= Yes |Website= |ModDB= }} Absolute Doom is the flagship mod of hardcoredoom.com. It originally began as several separate mods called Hardcore Doom, Definitive Doom, and Project ReTexture, but these were eventually merged for the sake of simplicity. The mod combines the best levels from each official IWAD into a series of condensed campaigns, adds new weapons and enemies, improves visual presentation with enhanced VFX and other effects, and replaces textures with higher quality re-imaginings. == Overview == === Gameplay === Absolute Doom does not stray too far away from vanilla gameplay, being more akin to an enhanced version of the original with an expanded weapon and monster roster. The mod introduces six new weapons: * [[Shock Knuckles]] - Generates splash damage when the player punches enemies. * [[Revolver]] - Revolver that offers higher damage per shot than the pistol, * [[Uber-Shotgun]] - Quad-barrel version of the SSG. * [[Assault Rifle]] - More accurate and deadlier than the chaingun but with lower ammo capacity. * [[Plasma SMG]] - Worse spread than the regular plasma gun but does more damage at close and medium rages. * [[Swarm Missiles]] - A hand-held swarm missile launcher. Certain vanilla weapons and enemies have likewise been rebalanced slightly: * The pistol has unlimited ammo to ensure the player always has a fallback weapon. * The shotgun fires a bit faster so that it stays useful even after the player collects the SSG. * The BFG now uses a separate ammo type from the plasma rifle. === Graphics & Sound === New visual effects have been added, with the most notable additions being improved explosions, particle effects, and dynamic lighting and screenshake for when the player fires his weapons. Campaign maps have color tinting applied for enhanced atmosphere. The mod incorporates the PlayStation Doom sound effects for most weapons, enemies, and environmental effects. === Levels === All four official IWADs have been condensed into a single 12-map episode consisting of the most memorable and best levels from each campaign. This allows the player to experience the best parts of each campaign without having to grind through the subpar portions. It is possible that additional episodes consisting of condensed versions of other campaigns, such as classic megawads, will be added in future updates. [[Category:Mods And Assets]] 50984018a3f0c25f0abbab4b44fd359b7a27117f 484 462 2025-11-08T22:25:48Z MasterOfDisillusionment 431405 wikitext text/x-wiki {{ModInfo Infobox |title= Absolute Doom |image= DoomCover.jpg |Author= GoreMaxxed Productions |Release Date= TBA |Iwad Required= doom2.iwad |Engine= UZDoom |Development Status= |Gameplay Modifications= |New Levels= Yes (4+ episodes) |New Graphics= Yes |New Music= Yes |New Sounds= Yes |New Weapons= Yes |New Enemies= Yes |Website= |ModDB= }} Absolute Doom is the flagship mod of hardcoredoom.com. It originally began as several separate mods called Hardcore Doom, Definitive Doom, and Project ReTexture, but these were eventually merged for the sake of simplicity. The mod combines the best levels from each official IWAD into a series of condensed campaigns, adds new weapons and enemies, improves visual presentation with enhanced VFX and other effects, and replaces textures with higher quality re-imaginings. == Overview == === Gameplay === Absolute Doom does not stray too far away from vanilla gameplay, being more akin to an enhanced version of the original with an expanded weapon and monster roster. The mod introduces six new weapons: * [[Shock Knuckles]] - Generates splash damage when the player punches enemies. * [[Revolver]] - Revolver that offers higher damage per shot than the pistol, * [[Uber-Shotgun]] - Quad-barrel version of the SSG. * [[Assault Rifle]] - More accurate and deadlier than the chaingun but with lower ammo capacity. * [[Plasma SMG]] - Worse spread than the regular plasma gun but does more damage at close and medium ranges. * [[Swarm Missiles]] - A hand-held swarm missile launcher. Certain vanilla weapons and enemies have likewise been rebalanced slightly: * The pistol has unlimited ammo to ensure the player always has a fallback weapon. * The shotgun fires a bit faster so that it stays useful even after the player collects the SSG. * The BFG now uses a separate ammo type from the plasma rifle. === Graphics & Sound === New visual effects have been added, with the most notable additions being improved explosions, particle effects, and dynamic lighting and screenshake for when the player fires his weapons. Campaign maps have color tinting applied for enhanced atmosphere. The mod incorporates the PlayStation Doom sound effects for most weapons, enemies, and environmental effects. === Levels === All four official IWADs have been condensed into a single 12-map episode consisting of the most memorable and best levels from each campaign. This allows the player to experience the best parts of each campaign without having to grind through the subpar portions. It is possible that additional episodes consisting of condensed versions of other campaigns, such as classic megawads, will be added in future updates. [[Category:Mods And Assets]] d6b68e629a01493043f106d123ea14312b43c5b6 487 484 2025-11-08T22:28:41Z MasterOfDisillusionment 431405 wikitext text/x-wiki {{ModInfo Infobox |title= Absolute Doom |image= DoomCover.jpg |Author= GoreMaxxed Productions |Release Date= TBA |Current Version= NA |Iwad Required= doom2.iwad |Engine= UZDoom |Development Status= |Gameplay Modifications= |New Levels= Yes (4+ episodes) |New Graphics= Yes |New Music= Yes |New Sounds= Yes |New Weapons= Yes |New Enemies= Yes |Website= |ModDB= }} Absolute Doom is the flagship mod of hardcoredoom.com. It originally began as several separate mods called Hardcore Doom, Definitive Doom, and Project ReTexture, but these were eventually merged for the sake of simplicity. The mod combines the best levels from each official IWAD into a series of condensed campaigns, adds new weapons and enemies, improves visual presentation with enhanced VFX and other effects, and replaces textures with higher quality re-imaginings. == Overview == === Gameplay === Absolute Doom does not stray too far away from vanilla gameplay, being more akin to an enhanced version of the original with an expanded weapon and monster roster. The mod introduces six new weapons: * [[Shock Knuckles]] - Generates splash damage when the player punches enemies. * [[Revolver]] - Revolver that offers higher damage per shot than the pistol, * [[Uber-Shotgun]] - Quad-barrel version of the SSG. * [[Assault Rifle]] - More accurate and deadlier than the chaingun but with lower ammo capacity. * [[Plasma SMG]] - Worse spread than the regular plasma gun but does more damage at close and medium ranges. * [[Swarm Missiles]] - A hand-held swarm missile launcher. Certain vanilla weapons and enemies have likewise been rebalanced slightly: * The pistol has unlimited ammo to ensure the player always has a fallback weapon. * The shotgun fires a bit faster so that it stays useful even after the player collects the SSG. * The BFG now uses a separate ammo type from the plasma rifle. === Graphics & Sound === New visual effects have been added, with the most notable additions being improved explosions, particle effects, and dynamic lighting and screenshake for when the player fires his weapons. Campaign maps have color tinting applied for enhanced atmosphere. The mod incorporates the PlayStation Doom sound effects for most weapons, enemies, and environmental effects. === Levels === All four official IWADs have been condensed into a single 12-map episode consisting of the most memorable and best levels from each campaign. This allows the player to experience the best parts of each campaign without having to grind through the subpar portions. It is possible that additional episodes consisting of condensed versions of other campaigns, such as classic megawads, will be added in future updates. [[Category:Mods And Assets]] a8f54536aa5d16e97451d2785a164c3f899b2355 488 487 2025-11-08T22:32:56Z MasterOfDisillusionment 431405 wikitext text/x-wiki {{ModInfo Infobox |title= Absolute Doom |image= DoomCover.jpg |Author(s)= GoreMaxxed Productions |Release Date= TBA |Current Version= NA |Iwad Required= doom2.iwad |Engine= UZDoom |Development Status= Active |Gameplay Modifications= |New Levels= Yes (4+ episodes) |New Graphics= Yes |New Music= Yes |New Sounds= Yes |New Weapons= Yes |New Enemies= Yes |Website= NA |ModDB= NA }} Absolute Doom is the flagship mod of hardcoredoom.com. It originally began as several separate mods called Hardcore Doom, Definitive Doom, and Project ReTexture, but these were eventually merged for the sake of simplicity. The mod combines the best levels from each official IWAD into a series of condensed campaigns, adds new weapons and enemies, improves visual presentation with enhanced VFX and other effects, and replaces textures with higher quality re-imaginings. == Overview == === Gameplay === Absolute Doom does not stray too far away from vanilla gameplay, being more akin to an enhanced version of the original with an expanded weapon and monster roster. The mod introduces six new weapons: * [[Shock Knuckles]] - Generates splash damage when the player punches enemies. * [[Revolver]] - Revolver that offers higher damage per shot than the pistol, * [[Uber-Shotgun]] - Quad-barrel version of the SSG. * [[Assault Rifle]] - More accurate and deadlier than the chaingun but with lower ammo capacity. * [[Plasma SMG]] - Worse spread than the regular plasma gun but does more damage at close and medium ranges. * [[Swarm Missiles]] - A hand-held swarm missile launcher. Certain vanilla weapons and enemies have likewise been rebalanced slightly: * The pistol has unlimited ammo to ensure the player always has a fallback weapon. * The shotgun fires a bit faster so that it stays useful even after the player collects the SSG. * The BFG now uses a separate ammo type from the plasma rifle. === Graphics & Sound === New visual effects have been added, with the most notable additions being improved explosions, particle effects, and dynamic lighting and screenshake for when the player fires his weapons. Campaign maps have color tinting applied for enhanced atmosphere. The mod incorporates the PlayStation Doom sound effects for most weapons, enemies, and environmental effects. === Levels === All four official IWADs have been condensed into a single 12-map episode consisting of the most memorable and best levels from each campaign. This allows the player to experience the best parts of each campaign without having to grind through the subpar portions. It is possible that additional episodes consisting of condensed versions of other campaigns, such as classic megawads, will be added in future updates. [[Category:Mods And Assets]] 8e8e5cac19fa0c2b505adbb16e2b2daa275ee786 489 488 2025-11-08T22:34:01Z MasterOfDisillusionment 431405 wikitext text/x-wiki {{ModInfo Infobox |title= Absolute Doom |image= DoomCover.jpg |Author(s)= GoreMaxxed Productions |Release Date= TBA |Current Version= 0.1 (dev build) |Iwad Required= doom2.iwad |Engine= UZDoom |Development Status= Active |Gameplay Modifications= |New Levels= Yes (4+ episodes) |New Graphics= Yes |New Music= Yes |New Sounds= Yes |New Weapons= Yes |New Enemies= Yes |Website= TBA |ModDB= TBA }} Absolute Doom is the flagship mod of hardcoredoom.com. It originally began as several separate mods called Hardcore Doom, Definitive Doom, and Project ReTexture, but these were eventually merged for the sake of simplicity. The mod combines the best levels from each official IWAD into a series of condensed campaigns, adds new weapons and enemies, improves visual presentation with enhanced VFX and other effects, and replaces textures with higher quality re-imaginings. == Overview == === Gameplay === Absolute Doom does not stray too far away from vanilla gameplay, being more akin to an enhanced version of the original with an expanded weapon and monster roster. The mod introduces six new weapons: * [[Shock Knuckles]] - Generates splash damage when the player punches enemies. * [[Revolver]] - Revolver that offers higher damage per shot than the pistol, * [[Uber-Shotgun]] - Quad-barrel version of the SSG. * [[Assault Rifle]] - More accurate and deadlier than the chaingun but with lower ammo capacity. * [[Plasma SMG]] - Worse spread than the regular plasma gun but does more damage at close and medium ranges. * [[Swarm Missiles]] - A hand-held swarm missile launcher. Certain vanilla weapons and enemies have likewise been rebalanced slightly: * The pistol has unlimited ammo to ensure the player always has a fallback weapon. * The shotgun fires a bit faster so that it stays useful even after the player collects the SSG. * The BFG now uses a separate ammo type from the plasma rifle. === Graphics & Sound === New visual effects have been added, with the most notable additions being improved explosions, particle effects, and dynamic lighting and screenshake for when the player fires his weapons. Campaign maps have color tinting applied for enhanced atmosphere. The mod incorporates the PlayStation Doom sound effects for most weapons, enemies, and environmental effects. === Levels === All four official IWADs have been condensed into a single 12-map episode consisting of the most memorable and best levels from each campaign. This allows the player to experience the best parts of each campaign without having to grind through the subpar portions. It is possible that additional episodes consisting of condensed versions of other campaigns, such as classic megawads, will be added in future updates. [[Category:Mods And Assets]] 88ec736dd26a1ae7ee7712467b513551c016e3a6 Template:ModInfo Infobox/doc 10 324 453 451 2025-11-08T19:10:09Z MasterOfDisillusionment 431405 wikitext text/x-wiki This is an example ModInfo infobox using the DRUID infobox framework. = Copyable code for use on other content pages = If you want to create pages using this infobox, you can copy the code below. This code is for CONTENT PAGES ONLY. It does not have anything to do with changing what the template supports. A field can be left empty if the data for it is not needed. == Example Code == <syntaxhighlight lang="wikitext" style="overflow: auto;"> {{ModInfo |title= Mod Title |image= ImageFileName.png |Author= Author name |Release Date= Whatever release date |Iwad Required= The game iwad file needed to load the mod |Engine= Game engine needed for the mod and the latest version know to work |Development Status= Is the mod active or dead? E.g. 'Active, Hiatus, Dead, etc.' |Gameplay Modifications= Yes or No |New Levels= Yes or No (if yes, specify how many) |New Graphics= Yes or No |New Music= Yes or No |New Sounds= Yes or No |New Weapons= Yes or No |New Enemies= Yes or No |Website= Insert team/project website if there is one |ModDB= Insert modDB page if there is one }} </syntaxhighlight><noinclude>[[Category:Template documentation]]</noinclude> == Clean Version == <syntaxhighlight lang="wikitext" style="overflow: auto;"> {{ModInfo |title= |image= |Author= |Release Date= |Iwad Required= |Engine= |Development Status= |Gameplay Modifications= |New Levels= |New Graphics= |New Music= |New Sounds= |New Weapons= |New Enemies= |Website= |ModDB= }} </syntaxhighlight><noinclude>[[Category:Template documentation]]</noinclude> 54d9b94a9986087235c3306d081d63a678ae160b 465 453 2025-11-08T21:31:18Z MasterOfDisillusionment 431405 wikitext text/x-wiki This is an example ModInfo infobox using the DRUID infobox framework. = Copyable code for use on other content pages = If you want to create pages using this infobox, you can copy the code below. This code is for CONTENT PAGES ONLY. It does not have anything to do with changing what the template supports. A field can be left empty if the data for it is not needed. == Example Code == <syntaxhighlight lang="wikitext" style="overflow: auto;"> {{ModInfo Infobox |title= Mod Title |image= ImageFileName.png |Author= Author name |Release Date= Whatever release date |Iwad Required= The game iwad file needed to load the mod |Engine= Game engine needed for the mod and the latest version know to work |Development Status= Is the mod active or dead? E.g. 'Active, Hiatus, Dead, etc.' |Gameplay Modifications= Yes or No |New Levels= Yes or No (if yes, specify how many) |New Graphics= Yes or No |New Music= Yes or No |New Sounds= Yes or No |New Weapons= Yes or No |New Enemies= Yes or No |Website= Insert team/project website if there is one |ModDB= Insert modDB page if there is one }} </syntaxhighlight><noinclude>[[Category:Template documentation]]</noinclude> == Clean Version == <syntaxhighlight lang="wikitext" style="overflow: auto;"> {{ModInfo Infobox |title= |image= |Author= |Release Date= |Iwad Required= |Engine= |Development Status= |Gameplay Modifications= |New Levels= |New Graphics= |New Music= |New Sounds= |New Weapons= |New Enemies= |Website= |ModDB= }} </syntaxhighlight><noinclude>[[Category:Template documentation]]</noinclude> 9326ae8714db787a98436a4d2102244ed668d1b0 486 465 2025-11-08T22:28:24Z MasterOfDisillusionment 431405 /* Copyable code for use on other content pages */ wikitext text/x-wiki This is an example ModInfo infobox using the DRUID infobox framework. = Copyable code for use on other content pages = If you want to create pages using this infobox, you can copy the code below. This code is for CONTENT PAGES ONLY. It does not have anything to do with changing what the template supports. A field can be left empty if the data for it is not needed. == Example Code == <syntaxhighlight lang="wikitext" style="overflow: auto;"> {{ModInfo Infobox |title= Mod Title |image= ImageFileName.png |Author= Author name |Release Date= Whatever release date |Current Version= Latest version of the mod |Iwad Required= The game iwad file needed to load the mod |Engine= Game engine needed for the mod and the latest version know to work |Development Status= Is the mod active or dead? E.g. 'Active, Hiatus, Dead, etc.' |Gameplay Modifications= Yes or No |New Levels= Yes or No (if yes, specify how many) |New Graphics= Yes or No |New Music= Yes or No |New Sounds= Yes or No |New Weapons= Yes or No |New Enemies= Yes or No |Website= Insert team/project website if there is one |ModDB= Insert modDB page if there is one }} </syntaxhighlight><noinclude>[[Category:Template documentation]]</noinclude> == Clean Version == <syntaxhighlight lang="wikitext" style="overflow: auto;"> {{ModInfo Infobox |title= |image= |Author= |Release Date= |Current Version= |Iwad Required= |Engine= |Development Status= |Gameplay Modifications= |New Levels= |New Graphics= |New Music= |New Sounds= |New Weapons= |New Enemies= |Website= |ModDB= }} </syntaxhighlight><noinclude>[[Category:Template documentation]]</noinclude> 433276e01509e565aaa92f00ebc15e159abbf4a4 Template:ModInfo Infobox 10 320 454 450 2025-11-08T19:49:32Z RheingoldRiver 2743 wikitext text/x-wiki <includeonly>{{#invoke:Infobox|main |kind=ModInfo |sep=, |image={{#if:{{{image|}}}|[[File:{{{image}}}{{!}}300px]]}} |sections=General Info, Features, External Links |General Info=Author(s), Release Date, Iwad Required, Engine, Development Status |Features=Gameplay Modifications, New Levels, New Graphics, New Music, New Sounds, New Weapons, New Enemies |External Links=Website, ModDB }}</includeonly><noinclude> {{documentation}} [[Category:Infobox templates]] </noinclude> 6572d90f07378197f860d07578f9db69ff6bba25 457 454 2025-11-08T20:18:06Z MasterOfDisillusionment 431405 wikitext text/x-wiki <includeonly>{{#invoke:Infobox|main |kind=ModInfo Infobox |sep=, |image={{#if:{{{image|}}}|[[File:{{{image}}}{{!}}300px]]}} |sections=General Info, Features, External Links |General Info=Author(s), Release Date, Iwad Required, Engine, Development Status |Features=Gameplay Modifications, New Levels, New Graphics, New Music, New Sounds, New Weapons, New Enemies |External Links=Website, ModDB }}</includeonly><noinclude> {{documentation}} [[Category:Infobox templates]] </noinclude> 0756ab557d116595071c6d0e8c2e3bd2eb1da6ca 485 457 2025-11-08T22:27:48Z MasterOfDisillusionment 431405 wikitext text/x-wiki <includeonly>{{#invoke:Infobox|main |kind=ModInfo Infobox |sep=, |image={{#if:{{{image|}}}|[[File:{{{image}}}{{!}}300px]]}} |sections=General Info, Features, External Links |General Info=Author(s), Release Date, Current Version, Iwad Required, Engine, Development Status |Features=Gameplay Modifications, New Levels, New Graphics, New Music, New Sounds, New Weapons, New Enemies |External Links=Website, ModDB }}</includeonly><noinclude> {{documentation}} [[Category:Infobox templates]] </noinclude> f423510c04a9fcff324e1791f4954bf230a7f903 Doom 0 306 461 374 2025-11-08T20:30:01Z MasterOfDisillusionment 431405 wikitext text/x-wiki {{GameInfo Infobox |title= Doom |image= DoomCover.jpg |Release date= 1993 |Engine= id Tech 1 |Setting/Theme= Sci-fi military, satanic. |Latest Version= 1.9 |Developer(s)= id Software |Publisher(s)= id Software |Mod support= Extensive; source port is public and numerous tools exist. |Notable mods/total conversions= * Brutal Doom * Final Doomer+ * Plutona 2 |Official website= |Steam page= [[https://store.steampowered.com/app/2280/DOOM__DOOM_II/| DOOM & DOOM II]] |GOG page= [[https://www.gog.com/en/game/doom_doom_ii| DOOM & DOOM II]] |ModDB page= }} Doom is a first person shooter action game created by Id Software and published in 1993. = Gameplay = == Mechanics == Insert Content. == Weapons == Insert Content. == Enemies == Insert Content. == Levels == Insert Content. = Setting and Story= == Plot == Insert Content. == Characters == Insert Content. = Design = == Graphics & Audio == Insert Content. == Visuals == Insert Content. = Development History = == Early Concepts == Insert Content. == Beta == Insert Content. == Final Build == Insert Content. [[Category:Game Information]] 16f8deb64606469f5debfd773e80ed1279f30ffb Assault Rifle 0 325 463 2025-11-08T21:08:12Z MasterOfDisillusionment 431405 Created page with "The assault riffle is a new weapon featured in the [[Absolute Doom]] mod. [[Category:Mods And Assets]]" wikitext text/x-wiki The assault riffle is a new weapon featured in the [[Absolute Doom]] mod. [[Category:Mods And Assets]] 02f9215f5de3506f678447294e750e29759c9289 469 463 2025-11-08T22:00:05Z MasterOfDisillusionment 431405 wikitext text/x-wiki {{WeaponInfo Infobox |title= Assault Rifle |image= |Author/Mod= Absolute Doom |Slot= 3 |Usage Rights= Must Give Credit |Weapon Type= Hitscan |Ammo Type= Magazine |Primary Fire= Auto-fire |Secondary Fire= |Requires Reloading= No |Ammo Capacity= 100 |Damage= 15 per bullet |Rate of Fire= High |Accuracy= High |Range= |ModDB= |Realm667= |Website= |Forum Thread= }} The assault riffle is a new weapon featured in the [[Absolute Doom]] mod. [[Category:Mods And Assets]] ec6b8ba05ea45d3085384025b28c3d77d3d6eb89 473 469 2025-11-08T22:05:21Z MasterOfDisillusionment 431405 wikitext text/x-wiki {{WeaponInfo Infobox |title= Assault Rifle |image= WeaponAssaultRifle.png |Author/Mod= Absolute Doom |Slot= 3 |Usage Rights= Must Give Credit |Weapon Type= Hitscan |Ammo Type= Magazine |Primary Fire= Auto-fire |Secondary Fire= |Requires Reloading= No |Ammo Capacity= 100 |Damage= 15 per bullet |Rate of Fire= High |Accuracy= High |Range= |ModDB= |Realm667= |Website= |Forum Thread= }} The assault riffle is a new weapon featured in the [[Absolute Doom]] mod. [[Category:Mods And Assets]] 44437f8678d71706378c5d62be9928d8c0f35a06 476 473 2025-11-08T22:08:45Z MasterOfDisillusionment 431405 wikitext text/x-wiki {{WeaponInfo Infobox |title= Assault Rifle |image= WeaponAssaultRifle.png |Author= GoreMaxxed Productions |Mod= Absolute Doom |Slot= 3 |Usage Rights= Must Give Credit |Weapon Type= Hitscan |Ammo Type= Magazine |Primary Fire= Auto-fire |Secondary Fire= |Requires Reloading= No |Ammo Capacity= 100 |Damage= 15 per bullet |Rate of Fire= High |Accuracy= High |Range= |ModDB= |Realm667= |Website= |Forum Thread= }} The assault riffle is a new weapon featured in the [[Absolute Doom]] mod. [[Category:Mods And Assets]] fc763edfa3b0e8f3e59f3a5117c36e014debe0ac 477 476 2025-11-08T22:11:49Z MasterOfDisillusionment 431405 wikitext text/x-wiki {{WeaponInfo Infobox |title= Assault Rifle |image= WeaponAssaultRifle.png |Author= [[GoreMaxxed Productions]] |Mod= [[Absolute Doom]] |Slot= 3 |Usage Rights= Must Give Credit |Weapon Type= Hitscan |Ammo Type= Magazine |Primary Fire= Auto-fire |Secondary Fire= |Requires Reloading= No |Ammo Capacity= 100 |Damage= 15 per bullet |Rate of Fire= High |Accuracy= High |Range= |ModDB= |Realm667= |Website= |Forum Thread= }} The assault rifle is a new weapon featured in the [[Absolute Doom]] mod. [[Category:Mods And Assets]] 0158fc89e406c83513d845ad1513f615a5689612 480 477 2025-11-08T22:16:19Z MasterOfDisillusionment 431405 wikitext text/x-wiki {{WeaponInfo Infobox |title= Assault Rifle |image= WeaponAssaultRifle.png |Author= [[GoreMaxxed Productions]] |Mod= [[Absolute Doom]] |Usage Rights= Must Give Credit |Weapon Type= Hitscan |Ammo Type= Magazine |Primary Fire= Auto-fire |Secondary Fire= |Requires Reloading= No |Slot= 3 |Ammo Capacity= 100 |Damage= 15 per bullet |Rate of Fire= High |Accuracy= High |Range= |ModDB= |Realm667= |Website= |Forum Thread= }} The assault rifle is a new weapon featured in the [[Absolute Doom]] mod. [[Category:Mods And Assets]] 05d048b31bff27d9fda8cc87e34fdd12720084d6 481 480 2025-11-08T22:21:49Z MasterOfDisillusionment 431405 wikitext text/x-wiki {{WeaponInfo Infobox |title= Assault Rifle |image= WeaponAssaultRifle.png |Author= [[GoreMaxxed Productions]] |Mod= [[Absolute Doom]] |Usage Rights= Must Give Credit |Weapon Type= Hitscan |Ammo Type= Magazine |Primary Fire= Auto-fire |Secondary Fire= |Requires Reloading= No |Slot= 3 |Ammo Capacity= 100 |Damage= 15 per bullet |Rate of Fire= High |Accuracy= High |Range= |ModDB= |Realm667= |Website= |Forum Thread= }} The assault rifle is a new weapon featured in the [[Absolute Doom]] mod. [[Category:Weapons]] cf75bd669832723110e581dd04999052d6b1f9c6 497 481 2025-11-09T14:13:01Z MasterOfDisillusionment 431405 wikitext text/x-wiki {{WeaponInfo Infobox |title= Assault Rifle |image= WeaponAssaultRifle.png |Author= [[GoreMaxxed Productions]] |Mod= [[Absolute Doom]] |Usage Rights= Must Give Credit |Weapon Type= Hitscan |Ammo Type= Magazine |Primary Fire= Auto-fire |Secondary Fire= |Requires Reloading= No |Radius= 16 |Height= 25 |Slot= 3 |Ammo Capacity= 100 |Damage= 15 per bullet |Rate of Fire= High |Accuracy= High |Range= |ModDB= |Realm667= |Website= |Forum Thread= }} The assault rifle is a new weapon featured in the [[Absolute Doom]] mod. [[Category:Weapons]] f06e78ddbeb79235c14f13d5a2cfad97fd85fa45 Template:WeaponInfo Infobox 10 326 464 2025-11-08T21:29:45Z MasterOfDisillusionment 431405 Created page with "<includeonly>{{#invoke:Infobox|main |kind=WeaponInfo Infobox |sep=, |image={{#if:{{{image|}}}|[[File:{{{image}}}{{!}}300px]]}} |sections=General Info, Behavior, Stats, External Links |General Info=Author/Mod, Slot, Usage Rights |Behavior=Weapon Type, Ammo Type, Primary Fire, Secondary Fire, Needs Reload |Stats=Damage, Rate of Fire, Accuracy, Range |External Links=ModDB, Realm667, Website, Forum Thread }}</includeonly><noinclude> {{documentation}} Category:Infobox tem..." wikitext text/x-wiki <includeonly>{{#invoke:Infobox|main |kind=WeaponInfo Infobox |sep=, |image={{#if:{{{image|}}}|[[File:{{{image}}}{{!}}300px]]}} |sections=General Info, Behavior, Stats, External Links |General Info=Author/Mod, Slot, Usage Rights |Behavior=Weapon Type, Ammo Type, Primary Fire, Secondary Fire, Needs Reload |Stats=Damage, Rate of Fire, Accuracy, Range |External Links=ModDB, Realm667, Website, Forum Thread }}</includeonly><noinclude> {{documentation}} [[Category:Infobox templates]] </noinclude> 6282ec57f28d5ea9784348b352d4eb21cb228aec 466 464 2025-11-08T21:39:31Z MasterOfDisillusionment 431405 wikitext text/x-wiki <includeonly>{{#invoke:Infobox|main |kind=WeaponInfo Infobox |sep=, |image={{#if:{{{image|}}}|[[File:{{{image}}}{{!}}300px]]}} |sections=General Info, Behavior, Stats, External Links |General Info=Author/Mod, Slot, Usage Rights |Behavior=Weapon Type, Ammo Type, Primary Fire, Secondary Fire, Requires Reloading |Stats=Damage, Rate of Fire, Accuracy, Range |External Links=ModDB, Realm667, Website, Forum Thread }}</includeonly><noinclude> {{documentation}} [[Category:Infobox templates]] </noinclude> dc65cbadb9f47fe785e5e67382df94ca58217f4b 467 466 2025-11-08T21:45:41Z MasterOfDisillusionment 431405 wikitext text/x-wiki <includeonly>{{#invoke:Infobox|main |kind=WeaponInfo Infobox |sep=, |image={{#if:{{{image|}}}|[[File:{{{image}}}{{!}}300px]]}} |sections=General Info, Behavior, Stats, External Links |General Info=Author/Mod, Slot, Usage Rights |Behavior=Weapon Type, Ammo Type, Primary Fire, Secondary Fire, Requires Reloading |Stats=Ammo Capacity, Damage, Rate of Fire, Accuracy, Range |External Links=ModDB, Realm667, Website, Forum Thread }}</includeonly><noinclude> {{documentation}} [[Category:Infobox templates]] </noinclude> e02762a015b31adf922fb74dd49551f43f77df1e 474 467 2025-11-08T22:06:39Z MasterOfDisillusionment 431405 wikitext text/x-wiki <includeonly>{{#invoke:Infobox|main |kind=WeaponInfo Infobox |sep=, |image={{#if:{{{image|}}}|[[File:{{{image}}}{{!}}300px]]}} |sections=General Info, Behavior, Stats, External Links |General Info=Author, Mod, Slot, Usage Rights |Behavior=Weapon Type, Ammo Type, Primary Fire, Secondary Fire, Requires Reloading |Stats=Ammo Capacity, Damage, Rate of Fire, Accuracy, Range |External Links=ModDB, Realm667, Website, Forum Thread }}</includeonly><noinclude> {{documentation}} [[Category:Infobox templates]] </noinclude> a3627231bd578fb35ffda62f2ee78f4914a2d9a2 479 474 2025-11-08T22:16:05Z MasterOfDisillusionment 431405 wikitext text/x-wiki <includeonly>{{#invoke:Infobox|main |kind=WeaponInfo Infobox |sep=, |image={{#if:{{{image|}}}|[[File:{{{image}}}{{!}}300px]]}} |sections=General Info, Behavior, Stats, External Links |General Info=Author, Mod, Usage Rights |Behavior=Weapon Type, Ammo Type, Primary Fire, Secondary Fire, Requires Reloading |Stats=Slot, Ammo Capacity, Damage, Rate of Fire, Accuracy, Range |External Links=ModDB, Realm667, Website, Forum Thread }}</includeonly><noinclude> {{documentation}} [[Category:Infobox templates]] </noinclude> 9285aacdb9dd3089df7cf256e02e447774089673 493 479 2025-11-09T14:07:08Z MasterOfDisillusionment 431405 wikitext text/x-wiki <includeonly>{{#invoke:Infobox|main |kind=WeaponInfo Infobox |sep=, |image={{#if:{{{image|}}}|[[File:{{{image}}}{{!}}300px]]}} |sections=General Info, Behavior, Stats, External Links |General Info=Author, Mod, Usage Rights |Behavior=Weapon Type, Ammo Type, Primary Fire, Secondary Fire, Requires Reloading |Stats=Height, Width, Slot, Ammo Capacity, Damage, Rate of Fire, Accuracy, Range |External Links=ModDB, Realm667, Website, Forum Thread }}</includeonly><noinclude> {{documentation}} [[Category:Infobox templates]] </noinclude> 84121678bf92e0c7351c908c0af82bbc2f9e2571 494 493 2025-11-09T14:08:00Z MasterOfDisillusionment 431405 wikitext text/x-wiki <includeonly>{{#invoke:Infobox|main |kind=WeaponInfo Infobox |sep=, |image={{#if:{{{image|}}}|[[File:{{{image}}}{{!}}300px]]}} |sections=General Info, Behavior, Stats, External Links |General Info=Author, Mod, Usage Rights |Behavior=Weapon Type, Ammo Type, Primary Fire, Secondary Fire, Requires Reloading |Stats=Height & Width, Slot, Ammo Capacity, Damage, Rate of Fire, Accuracy, Range |External Links=ModDB, Realm667, Website, Forum Thread }}</includeonly><noinclude> {{documentation}} [[Category:Infobox templates]] </noinclude> 4c3edfc4e72d58bc43385988f0488d619aa65ba1 495 494 2025-11-09T14:09:23Z MasterOfDisillusionment 431405 wikitext text/x-wiki <includeonly>{{#invoke:Infobox|main |kind=WeaponInfo Infobox |sep=, |image={{#if:{{{image|}}}|[[File:{{{image}}}{{!}}300px]]}} |sections=General Info, Behavior, Stats, External Links |General Info=Author, Mod, Usage Rights |Behavior=Weapon Type, Ammo Type, Primary Fire, Secondary Fire, Requires Reloading |Stats=Width & Height, Slot, Ammo Capacity, Damage, Rate of Fire, Accuracy, Range |External Links=ModDB, Realm667, Website, Forum Thread }}</includeonly><noinclude> {{documentation}} [[Category:Infobox templates]] </noinclude> 8253e6504ee3736d3d7ae14eab52880f263819ff 496 495 2025-11-09T14:12:22Z MasterOfDisillusionment 431405 wikitext text/x-wiki <includeonly>{{#invoke:Infobox|main |kind=WeaponInfo Infobox |sep=, |image={{#if:{{{image|}}}|[[File:{{{image}}}{{!}}300px]]}} |sections=General Info, Behavior, Stats, External Links |General Info=Author, Mod, Usage Rights |Behavior=Weapon Type, Ammo Type, Primary Fire, Secondary Fire, Requires Reloading |Stats=Radius, Height, Slot, Ammo Capacity, Damage, Rate of Fire, Accuracy, Range |External Links=ModDB, Realm667, Website, Forum Thread }}</includeonly><noinclude> {{documentation}} [[Category:Infobox templates]] </noinclude> ce30f6c8dfa86662d75730f7d9d547c15023b17b Template:WeaponInfo Infobox/doc 10 327 468 2025-11-08T21:54:24Z MasterOfDisillusionment 431405 Created page with "This is an example WeaponInfo infobox using the DRUID infobox framework. = Copyable code for use on other content pages = If you want to create pages using this infobox, you can copy the code below. This code is for CONTENT PAGES ONLY. It does not have anything to do with changing what the template supports. A field can be left empty if the data for it is not needed. == Example Code == <syntaxhighlight lang="wikitext" style="overflow: auto;"> {{WeaponInfo Infobox |t..." wikitext text/x-wiki This is an example WeaponInfo infobox using the DRUID infobox framework. = Copyable code for use on other content pages = If you want to create pages using this infobox, you can copy the code below. This code is for CONTENT PAGES ONLY. It does not have anything to do with changing what the template supports. A field can be left empty if the data for it is not needed. == Example Code == <syntaxhighlight lang="wikitext" style="overflow: auto;"> {{WeaponInfo Infobox |title= Mod Title |image= ImageFileName.png |Author/Mod= Name of author and or mod name e.g. DeathNinja666/My Awesome Mod |Slot= The weapon slot used by this weapon |Usage Rights= Specified is others are allowed to use this weapon in their own games or mods. |Weapon Type= Specify what type of weapon it is e.g. hitscan, projectile, melee, etc. |Ammo Type= Specify what type of ammo this weapon uses e.g. shell, bullets, plasma, etc. |Primary Fire= What does the primary fire do? E.g. single-shot, burst fire, full-auto, etc. |Secondary Fire= Ditto but for secondary fire (leave blank if there is none) |Requires Reloading= If the weapon must be reloaded after a certain number of shots, say Yes. Otherwise it's a No. |Ammo Capacity= How much ammo can be carried for the weapon. If the weapon supports a Doom style backpack, list the regular and backpack value separately e.g. 100 (200 with backpack) |Damage= How much damage is done per shot. If the weapon fires multiple rounds per trigger-pull, the damage per bullet/projectile must be listed separately from the total amount e.g. 10 per bullet (250 total) |Rate of Fire= How fast the weapon fires on a scale of 1 to 5, with higher values being faster. |Accuracy= Ditto but for accuracy |Range= Ditto but for range. If the weapon ignores the concept of range, you can leave this empty. |ModDB= Link to the moddb page where this weapon or the mod it belongs to can be found. |Realm667= Ditto but for Realm667 |Website= Ditto but for the project website if there is one. |Forum Thread= Ditto but for the forum thread if there is one. }} </syntaxhighlight><noinclude>[[Category:Template documentation]]</noinclude> == Clean Version == <syntaxhighlight lang="wikitext" style="overflow: auto;"> {{WeaponInfo Infobox |title= |image= |Author/Mod= |Slot= |Usage Rights= |Weapon Type= |Ammo Type= |Primary Fire= |Secondary Fire= |Requires Reloading= |Ammo Capacity= |Damage= |Rate of Fire= |Accuracy= |Range= |ModDB= |Realm667= |Website= |Forum Thread= }} </syntaxhighlight><noinclude>[[Category:Template documentation]]</noinclude> 7a5e6c219c26cee455be6376347a4e94acbb02bf 475 468 2025-11-08T22:07:43Z MasterOfDisillusionment 431405 wikitext text/x-wiki This is an example WeaponInfo infobox using the DRUID infobox framework. = Copyable code for use on other content pages = If you want to create pages using this infobox, you can copy the code below. This code is for CONTENT PAGES ONLY. It does not have anything to do with changing what the template supports. A field can be left empty if the data for it is not needed. == Example Code == <syntaxhighlight lang="wikitext" style="overflow: auto;"> {{WeaponInfo Infobox |title= Mod Title |image= ImageFileName.png |Author= Name of author |Mod= Name of the mod |Slot= The weapon slot used by this weapon |Usage Rights= Specified is others are allowed to use this weapon in their own games or mods. |Weapon Type= Specify what type of weapon it is e.g. hitscan, projectile, melee, etc. |Ammo Type= Specify what type of ammo this weapon uses e.g. shell, bullets, plasma, etc. |Primary Fire= What does the primary fire do? E.g. single-shot, burst fire, full-auto, etc. |Secondary Fire= Ditto but for secondary fire (leave blank if there is none) |Requires Reloading= If the weapon must be reloaded after a certain number of shots, say Yes. Otherwise it's a No. |Ammo Capacity= How much ammo can be carried for the weapon. If the weapon supports a Doom style backpack, list the regular and backpack value separately e.g. 100 (200 with backpack) |Damage= How much damage is done per shot. If the weapon fires multiple rounds per trigger-pull, the damage per bullet/projectile must be listed separately from the total amount e.g. 10 per bullet (250 total) |Rate of Fire= How fast the weapon fires on a scale of 1 to 5, with higher values being faster. |Accuracy= Ditto but for accuracy |Range= Ditto but for range. If the weapon ignores the concept of range, you can leave this empty. |ModDB= Link to the moddb page where this weapon or the mod it belongs to can be found. |Realm667= Ditto but for Realm667 |Website= Ditto but for the project website if there is one. |Forum Thread= Ditto but for the forum thread if there is one. }} </syntaxhighlight><noinclude>[[Category:Template documentation]]</noinclude> == Clean Version == <syntaxhighlight lang="wikitext" style="overflow: auto;"> {{WeaponInfo Infobox |title= |image= |Author= |Mod= |Slot= |Usage Rights= |Weapon Type= |Ammo Type= |Primary Fire= |Secondary Fire= |Requires Reloading= |Ammo Capacity= |Damage= |Rate of Fire= |Accuracy= |Range= |ModDB= |Realm667= |Website= |Forum Thread= }} </syntaxhighlight><noinclude>[[Category:Template documentation]]</noinclude> c393ce0ce1a654c43a91d520a5c5b7fcdf90a116 478 475 2025-11-08T22:15:37Z MasterOfDisillusionment 431405 wikitext text/x-wiki This is an example WeaponInfo infobox using the DRUID infobox framework. = Copyable code for use on other content pages = If you want to create pages using this infobox, you can copy the code below. This code is for CONTENT PAGES ONLY. It does not have anything to do with changing what the template supports. A field can be left empty if the data for it is not needed. == Example Code == <syntaxhighlight lang="wikitext" style="overflow: auto;"> {{WeaponInfo Infobox |title= Mod Title |image= ImageFileName.png |Author= Name of author |Mod= Name of the mod |Usage Rights= Specified is others are allowed to use this weapon in their own games or mods. |Weapon Type= Specify what type of weapon it is e.g. hitscan, projectile, melee, etc. |Ammo Type= Specify what type of ammo this weapon uses e.g. shell, bullets, plasma, etc. |Primary Fire= What does the primary fire do? E.g. single-shot, burst fire, full-auto, etc. |Secondary Fire= Ditto but for secondary fire (leave blank if there is none) |Requires Reloading= If the weapon must be reloaded after a certain number of shots, say Yes. Otherwise it's a No. |Slot= The weapon slot used by this weapon |Ammo Capacity= How much ammo can be carried for the weapon. If the weapon supports a Doom style backpack, list the regular and backpack value separately e.g. 100 (200 with backpack) |Damage= How much damage is done per shot. If the weapon fires multiple rounds per trigger-pull, the damage per bullet/projectile must be listed separately from the total amount e.g. 10 per bullet (250 total) |Rate of Fire= How fast the weapon fires on a scale of 1 to 5, with higher values being faster. |Accuracy= Ditto but for accuracy |Range= Ditto but for range. If the weapon ignores the concept of range, you can leave this empty. |ModDB= Link to the moddb page where this weapon or the mod it belongs to can be found. |Realm667= Ditto but for Realm667 |Website= Ditto but for the project website if there is one. |Forum Thread= Ditto but for the forum thread if there is one. }} </syntaxhighlight><noinclude>[[Category:Template documentation]]</noinclude> == Clean Version == <syntaxhighlight lang="wikitext" style="overflow: auto;"> {{WeaponInfo Infobox |title= |image= |Author= |Mod= |Usage Rights= |Weapon Type= |Ammo Type= |Primary Fire= |Secondary Fire= |Requires Reloading= |Slot= |Ammo Capacity= |Damage= |Rate of Fire= |Accuracy= |Range= |ModDB= |Realm667= |Website= |Forum Thread= }} </syntaxhighlight><noinclude>[[Category:Template documentation]]</noinclude> bf3d501c2266717234563831d8990e144fa157c7 498 478 2025-11-09T14:41:49Z MasterOfDisillusionment 431405 wikitext text/x-wiki This is an example WeaponInfo infobox using the DRUID infobox framework. = Copyable code for use on other content pages = If you want to create pages using this infobox, you can copy the code below. This code is for CONTENT PAGES ONLY. It does not have anything to do with changing what the template supports. A field can be left empty if the data for it is not needed. == Example Code == <syntaxhighlight lang="wikitext" style="overflow: auto;"> {{WeaponInfo Infobox |title= Mod Title |image= ImageFileName.png |Author= Name of author |Mod= Name of the mod |Usage Rights= Specified is others are allowed to use this weapon in their own games or mods. |Weapon Type= Specify what type of weapon it is e.g. hitscan, projectile, melee, etc. |Ammo Type= Specify what type of ammo this weapon uses e.g. shell, bullets, plasma, etc. |Primary Fire= What does the primary fire do? E.g. single-shot, burst fire, full-auto, etc. |Secondary Fire= Ditto but for secondary fire (leave blank if there is none) |Requires Reloading= If the weapon must be reloaded after a certain number of shots, say Yes. Otherwise it's a No. |Radius= The radius of the weapon as it is defined in the script code. |Width= The width of the weapon as it is defined in the script code. |Slot= The weapon slot used by this weapon |Ammo Capacity= How much ammo can be carried for the weapon. If the weapon supports a Doom style backpack, list the regular and backpack value separately e.g. 100 (200 with backpack) |Damage= How much damage is done per shot. If the weapon fires multiple rounds per trigger-pull, the damage per bullet/projectile must be listed separately from the total amount e.g. 10 per bullet (250 total) |Rate of Fire= How fast the weapon fires on a scale of 1 to 5, with higher values being faster. |Accuracy= Ditto but for accuracy |Range= Ditto but for range. If the weapon ignores the concept of range, you can leave this empty. |ModDB= Link to the moddb page where this weapon or the mod it belongs to can be found. |Realm667= Ditto but for Realm667 |Website= Ditto but for the project website if there is one. |Forum Thread= Ditto but for the forum thread if there is one. }} </syntaxhighlight><noinclude>[[Category:Template documentation]]</noinclude> == Clean Version == <syntaxhighlight lang="wikitext" style="overflow: auto;"> {{WeaponInfo Infobox |title= |image= |Author= |Mod= |Usage Rights= |Weapon Type= |Ammo Type= |Primary Fire= |Secondary Fire= |Requires Reloading= |Radius= |Width= |Slot= |Ammo Capacity= |Damage= |Rate of Fire= |Accuracy= |Range= |ModDB= |Realm667= |Website= |Forum Thread= }} </syntaxhighlight><noinclude>[[Category:Template documentation]]</noinclude> 55a42db1f84753c95d0cf94a50575433027df424 File:WeaponAssaultRifle.png 6 328 470 2025-11-08T22:01:42Z MasterOfDisillusionment 431405 Weapon sprite for the Assault rifle weapon from Absolute Doom. wikitext text/x-wiki == Summary == Weapon sprite for the Assault rifle weapon from Absolute Doom. == Licensing == {{License|fairuse}} 82dde4f200b2364605fca5e3189f7e0e101a919a 471 470 2025-11-08T22:04:59Z MasterOfDisillusionment 431405 MasterOfDisillusionment renamed page [[File:Weapon AssaultRifle.png]] to [[File:WeaponAssaultRifle.png]] wikitext text/x-wiki == Summary == Weapon sprite for the Assault rifle weapon from Absolute Doom. == Licensing == {{License|fairuse}} 82dde4f200b2364605fca5e3189f7e0e101a919a File:Weapon AssaultRifle.png 6 329 472 2025-11-08T22:04:59Z MasterOfDisillusionment 431405 MasterOfDisillusionment renamed page [[File:Weapon AssaultRifle.png]] to [[File:WeaponAssaultRifle.png]] wikitext text/x-wiki #REDIRECT [[File:WeaponAssaultRifle.png]] 7c8a51b302d1d21faab6328d711d0f96834733b8 Category:Weapons 14 331 483 2025-11-08T22:24:33Z MasterOfDisillusionment 431405 Created page with "All pages related to weapons and ammo pickups are listed here. [[Category:Weapons]]" wikitext text/x-wiki All pages related to weapons and ammo pickups are listed here. [[Category:Weapons]] 19dd94a3ce55cb449011f0f3743d9a57a93e6e58 Malefact Mapping Tutorials 0 314 490 411 2025-11-09T00:16:28Z MasterOfDisillusionment 431405 wikitext text/x-wiki This level design guide was written to ease newcomers to Malefact mapping into the process. It was written by hardcore_gamer, who is the lead developer and level designer for the game. If you wish to create your own levels for the game, it’s strongly recommended you give them a glance, even if only for those sections covering functionality that is unique to Malefact. If you’d like to add your own tutorials or link to those created by others, you can do so on the [[Category:Tutorials And Guides|main tutorial category page]]. == Table of Contents == === Beginner === * Installing Prerequisites * Sector Creation * Texturing * Lighting * Sector Effects * Actor Placement * Linedef Triggers & Interactive Elements * Ending Your Map * MAPINFO Definition === Advanced === * Scrolling Surfaces * Slopes & Arches * 3D Sectors & Liquids * Patrolling Monsters & Hazards * ACS Scripting * Hub Maps * Ambient Sounds === Design Theory === * Pre-Planning * Area Modules * Monster Closets & Traps * Encounter Design & Pacing [[Category:Tutorials And Guides]] 362b190c45fc70d0d51c692f9c5d038dc9051735 491 490 2025-11-09T00:17:45Z MasterOfDisillusionment 431405 wikitext text/x-wiki This level design guide was created to ease newcomers to Malefact mapping into the process. It was written by the game's lead developer and level designer. If you wish to create your own levels for the game, it’s strongly recommended you give them a glance, even if only for those sections covering functionality that is unique to Malefact. If you’d like to add your own tutorials or link to those created by others, you can do so on the [[Category:Tutorials And Guides|main tutorial category page]]. == Table of Contents == === Beginner === * Installing Prerequisites * Sector Creation * Texturing * Lighting * Sector Effects * Actor Placement * Linedef Triggers & Interactive Elements * Ending Your Map * MAPINFO Definition === Advanced === * Scrolling Surfaces * Slopes & Arches * 3D Sectors & Liquids * Patrolling Monsters & Hazards * ACS Scripting * Hub Maps * Ambient Sounds === Design Theory === * Pre-Planning * Area Modules * Monster Closets & Traps * Encounter Design & Pacing [[Category:Tutorials And Guides]] 9f0122c443f0ed8292286b50742f4d0750fcfa57 492 491 2025-11-09T00:18:17Z MasterOfDisillusionment 431405 Protected "[[Malefact Mapping Tutorials]]": Official Malefact Tutorials written by the game's developer. ([Edit=Allow only administrators] (indefinite) [Rename=Allow only administrators] (indefinite)) wikitext text/x-wiki This level design guide was created to ease newcomers to Malefact mapping into the process. It was written by the game's lead developer and level designer. If you wish to create your own levels for the game, it’s strongly recommended you give them a glance, even if only for those sections covering functionality that is unique to Malefact. If you’d like to add your own tutorials or link to those created by others, you can do so on the [[Category:Tutorials And Guides|main tutorial category page]]. == Table of Contents == === Beginner === * Installing Prerequisites * Sector Creation * Texturing * Lighting * Sector Effects * Actor Placement * Linedef Triggers & Interactive Elements * Ending Your Map * MAPINFO Definition === Advanced === * Scrolling Surfaces * Slopes & Arches * 3D Sectors & Liquids * Patrolling Monsters & Hazards * ACS Scripting * Hub Maps * Ambient Sounds === Design Theory === * Pre-Planning * Area Modules * Monster Closets & Traps * Encounter Design & Pacing [[Category:Tutorials And Guides]] 9f0122c443f0ed8292286b50742f4d0750fcfa57 Template:MonsterInfo Infobox 10 332 499 2025-11-09T14:47:10Z MasterOfDisillusionment 431405 Created page with "<includeonly>{{#invoke:Infobox|main |kind=MonsterInfo Infobox |sep=, |image={{#if:{{{image|}}}|[[File:{{{image}}}{{!}}300px]]}} |sections=General Info, Behavior, Stats, External Links |General Info=Author, First Appearance, Mod, Usage Rights |Behavior=Attack Type, Special Abilities |Stats=Radius, Height, ATK, HP, Speed, Pain chance, Drops |External Links=ModDB, Realm667, Website, Forum Thread }}</includeonly><noinclude> {{documentation}} [[Category:Infobox templates]]..." wikitext text/x-wiki <includeonly>{{#invoke:Infobox|main |kind=MonsterInfo Infobox |sep=, |image={{#if:{{{image|}}}|[[File:{{{image}}}{{!}}300px]]}} |sections=General Info, Behavior, Stats, External Links |General Info=Author, First Appearance, Mod, Usage Rights |Behavior=Attack Type, Special Abilities |Stats=Radius, Height, ATK, HP, Speed, Pain chance, Drops |External Links=ModDB, Realm667, Website, Forum Thread }}</includeonly><noinclude> {{documentation}} [[Category:Infobox templates]] </noinclude> 263fd36d6bc3a3f3c100243be2adfe14bd0c08e5 500 499 2025-11-09T14:54:07Z MasterOfDisillusionment 431405 wikitext text/x-wiki <includeonly>{{#invoke:Infobox|main |kind=MonsterInfo Infobox |sep=, |image={{#if:{{{image|}}}|[[File:{{{image}}}{{!}}300px]]}} |sections=General Info, Behavior, Stats, External Links |General Info=Author, First Appearance, Mod, Usage Rights |Behavior=Attacks, Special Abilities |Stats=Radius, Height, ATK, HP, Speed, Pain chance, Drops |External Links=ModDB, Realm667, Website, Forum Thread }}</includeonly><noinclude> {{documentation}} [[Category:Infobox templates]] </noinclude> 82200405a354e543eafe89f8565c7ec656c1d065 501 500 2025-11-09T14:56:10Z MasterOfDisillusionment 431405 wikitext text/x-wiki <includeonly>{{#invoke:Infobox|main |kind=MonsterInfo Infobox |sep=, |image={{#if:{{{image|}}}|[[File:{{{image}}}{{!}}300px]]}} |sections=General Info, Behavior, Stats, External Links |General Info=Author, First Appearance, Mod, Usage Rights |Behavior=Attacks, Special Abilities |Stats=Radius, Height, HP, Speed, Pain chance, Drops |External Links=ModDB, Realm667, Website, Forum Thread }}</includeonly><noinclude> {{documentation}} [[Category:Infobox templates]] </noinclude> ad495c0c6e789ac7348c71bf6d84dda7c4249802 502 501 2025-11-09T14:59:32Z MasterOfDisillusionment 431405 wikitext text/x-wiki <includeonly>{{#invoke:Infobox|main |kind=MonsterInfo Infobox |sep=, |image={{#if:{{{image|}}}|[[File:{{{image}}}{{!}}300px]]}} |sections=General Info, Behavior, Stats, External Links |General Info=Author, First Appearance, Mod, Usage Rights |Behavior=Attacks, Special Abilities |Stats=Radius, Height, HP, Speed, Attack Speed, Pain chance, Drops |External Links=ModDB, Realm667, Website, Forum Thread }}</includeonly><noinclude> {{documentation}} [[Category:Infobox templates]] </noinclude> 5ed561845c2c2f7c0fcdf0469004a7dbf12768e1 Attribute Scale Reference 0 333 503 2025-11-09T15:10:29Z MasterOfDisillusionment 431405 Created page with "In UZDoom engine games, actors such as monsters and weapons use specific values to define speed, attack damage, and other attributes. The problem is that these values are not always easy for casual wiki browsers to understand. To improve clarity, this page explains what these numbers actually mean in layman's terms. [[Category:Mods And Assets]]" wikitext text/x-wiki In UZDoom engine games, actors such as monsters and weapons use specific values to define speed, attack damage, and other attributes. The problem is that these values are not always easy for casual wiki browsers to understand. To improve clarity, this page explains what these numbers actually mean in layman's terms. [[Category:Mods And Assets]] 4bcdf60839dc2a37a1f121159b0e55d7342c3196 Template:MonsterInfo Infobox/doc 10 334 504 2025-11-09T15:25:02Z MasterOfDisillusionment 431405 Created page with "This is an example MonsterInfo infobox using the DRUID infobox framework. = Copyable code for use on other content pages = If you want to create pages using this infobox, you can copy the code below. This code is for CONTENT PAGES ONLY. It does not have anything to do with changing what the template supports. A field can be left empty if the data for it is not needed. == Example Code == Attribute Scale Reference|If you haven't already, make sure you have read the..." wikitext text/x-wiki This is an example MonsterInfo infobox using the DRUID infobox framework. = Copyable code for use on other content pages = If you want to create pages using this infobox, you can copy the code below. This code is for CONTENT PAGES ONLY. It does not have anything to do with changing what the template supports. A field can be left empty if the data for it is not needed. == Example Code == [[Attribute Scale Reference|If you haven't already, make sure you have read the page on how to correctly list actor stats.]] <syntaxhighlight lang="wikitext" style="overflow: auto;"> {{MonsterInfo Infobox |title= Mod Title |image= ImageFileName.png |Author= Name of author |First Appearance = In which game did this monster appear first? Ignore this if it's a user made custom monster and instead use the mod field below. |Mod= Name of the mod this monster belongs to. Ignore this if the monster comes from an official game. |Usage Rights= Specified is others are allowed to use this weapon in their own games or mods. If it comes from an official game, copyright applies by default. |Attacks= Add bullet points for each attack the monster has, including the damage each does e.g. "Hitscan (23ATK)" |Special Abilities= Optionally, add bullet points that list special abilities if there monster has any. |Radius= The radius of the monster as it is defined in the script code. |Width= The width of the monster as it is defined in the script code. |HP= How much health does this monster have? |Speed= How fast does this monster move? |Attack Speed= How fast the monster can attack again. |Accuracy= How accurate is this monster? If there is more than one attack, use bullet points to list accuracy for each attack. |ModDB= Link to the moddb page where this weapon or the mod it belongs to can be found. |Realm667= Ditto but for Realm667 |Website= Ditto but for the project website if there is one. |Forum Thread= Ditto but for the forum thread if there is one. }} </syntaxhighlight><noinclude>[[Category:Template documentation]]</noinclude> == Clean Version == <syntaxhighlight lang="wikitext" style="overflow: auto;"> {{WeaponInfo Infobox |title= |image= |Author= |First Appearance = |Mod= |Usage Rights= |Attacks= |Special Abilities= |Radius= |Width= |HP= |Speed= |Attack Speed= |Accuracy= |ModDB= |Realm667= |Website= |Forum Thread= }} </syntaxhighlight><noinclude>[[Category:Template documentation]]</noinclude> c13f03e49b2d3e0e765b84abeaf46d65845575d7 505 504 2025-11-09T15:25:16Z MasterOfDisillusionment 431405 wikitext text/x-wiki This is an example MonsterInfo infobox using the DRUID infobox framework. = Copyable code for use on other content pages = If you want to create pages using this infobox, you can copy the code below. This code is for CONTENT PAGES ONLY. It does not have anything to do with changing what the template supports. A field can be left empty if the data for it is not needed. == Example Code == [[Attribute Scale Reference|If you haven't already, make sure you have read the page on how to correctly list actor stats.]] <syntaxhighlight lang="wikitext" style="overflow: auto;"> {{MonsterInfo Infobox |title= Mod Title |image= ImageFileName.png |Author= Name of author |First Appearance = In which game did this monster appear first? Ignore this if it's a user made custom monster and instead use the mod field below. |Mod= Name of the mod this monster belongs to. Ignore this if the monster comes from an official game. |Usage Rights= Specified is others are allowed to use this weapon in their own games or mods. If it comes from an official game, copyright applies by default. |Attacks= Add bullet points for each attack the monster has, including the damage each does e.g. "Hitscan (23ATK)" |Special Abilities= Optionally, add bullet points that list special abilities if there monster has any. |Radius= The radius of the monster as it is defined in the script code. |Width= The width of the monster as it is defined in the script code. |HP= How much health does this monster have? |Speed= How fast does this monster move? |Attack Speed= How fast the monster can attack again. |Accuracy= How accurate is this monster? If there is more than one attack, use bullet points to list accuracy for each attack. |ModDB= Link to the moddb page where this weapon or the mod it belongs to can be found. |Realm667= Ditto but for Realm667 |Website= Ditto but for the project website if there is one. |Forum Thread= Ditto but for the forum thread if there is one. }} </syntaxhighlight><noinclude>[[Category:Template documentation]]</noinclude> == Clean Version == <syntaxhighlight lang="wikitext" style="overflow: auto;"> {{MonsterInfo Infobox |title= |image= |Author= |First Appearance = |Mod= |Usage Rights= |Attacks= |Special Abilities= |Radius= |Width= |HP= |Speed= |Attack Speed= |Accuracy= |ModDB= |Realm667= |Website= |Forum Thread= }} </syntaxhighlight><noinclude>[[Category:Template documentation]]</noinclude> a6231f9b83354286067577e321ba7f2b63ca397e 506 505 2025-11-09T15:25:38Z MasterOfDisillusionment 431405 wikitext text/x-wiki This is an example MonsterInfo infobox using the DRUID infobox framework. = Copyable code for use on other content pages = If you want to create pages using this infobox, you can copy the code below. This code is for CONTENT PAGES ONLY. It does not have anything to do with changing what the template supports. A field can be left empty if the data for it is not needed. == Example Code == [[Attribute Scale Reference|If you haven't already, make sure you have read the page on how to correctly list actor stats.]] <syntaxhighlight lang="wikitext" style="overflow: auto;"> {{MonsterInfo Infobox |title= Monster Name |image= ImageFileName.png |Author= Name of author |First Appearance = In which game did this monster appear first? Ignore this if it's a user made custom monster and instead use the mod field below. |Mod= Name of the mod this monster belongs to. Ignore this if the monster comes from an official game. |Usage Rights= Specified is others are allowed to use this weapon in their own games or mods. If it comes from an official game, copyright applies by default. |Attacks= Add bullet points for each attack the monster has, including the damage each does e.g. "Hitscan (23ATK)" |Special Abilities= Optionally, add bullet points that list special abilities if there monster has any. |Radius= The radius of the monster as it is defined in the script code. |Width= The width of the monster as it is defined in the script code. |HP= How much health does this monster have? |Speed= How fast does this monster move? |Attack Speed= How fast the monster can attack again. |Accuracy= How accurate is this monster? If there is more than one attack, use bullet points to list accuracy for each attack. |ModDB= Link to the moddb page where this weapon or the mod it belongs to can be found. |Realm667= Ditto but for Realm667 |Website= Ditto but for the project website if there is one. |Forum Thread= Ditto but for the forum thread if there is one. }} </syntaxhighlight><noinclude>[[Category:Template documentation]]</noinclude> == Clean Version == <syntaxhighlight lang="wikitext" style="overflow: auto;"> {{MonsterInfo Infobox |title= |image= |Author= |First Appearance = |Mod= |Usage Rights= |Attacks= |Special Abilities= |Radius= |Width= |HP= |Speed= |Attack Speed= |Accuracy= |ModDB= |Realm667= |Website= |Forum Thread= }} </syntaxhighlight><noinclude>[[Category:Template documentation]]</noinclude> 38acff450015e76da02accaa4a992d17b13dfada 513 506 2025-11-09T15:46:52Z MasterOfDisillusionment 431405 wikitext text/x-wiki This is an example MonsterInfo infobox using the DRUID infobox framework. = Copyable code for use on other content pages = If you want to create pages using this infobox, you can copy the code below. This code is for CONTENT PAGES ONLY. It does not have anything to do with changing what the template supports. A field can be left empty if the data for it is not needed. == Example Code == [[Attribute Scale Reference|If you haven't already, make sure you have read the page on how to correctly list actor stats.]] <syntaxhighlight lang="wikitext" style="overflow: auto;"> {{MonsterInfo Infobox |title= Monster Name |image= ImageFileName.png |Author= Name of author |First Appearance = In which game did this monster appear first? Ignore this if it's a user made custom monster and instead use the mod field below. |Mod= Name of the mod this monster belongs to. Ignore this if the monster comes from an official game. |Usage Rights= Specified is others are allowed to use this weapon in their own games or mods. If it comes from an official game, copyright applies by default. |Attacks= Add bullet points for each attack the monster has, including the damage each does e.g. "Hitscan (23ATK)" |Special Abilities= Optionally, add bullet points that list special abilities if there monster has any. |Radius= The radius of the monster as it is defined in the script code. |Height= The width of the monster as it is defined in the script code. |HP= How much health does this monster have? |Speed= How fast does this monster move? |Attack Speed= How fast the monster can attack again. |Accuracy= How accurate is this monster? If there is more than one attack, use bullet points to list accuracy for each attack. |ModDB= Link to the moddb page where this weapon or the mod it belongs to can be found. |Realm667= Ditto but for Realm667 |Website= Ditto but for the project website if there is one. |Forum Thread= Ditto but for the forum thread if there is one. }} </syntaxhighlight><noinclude>[[Category:Template documentation]]</noinclude> == Clean Version == <syntaxhighlight lang="wikitext" style="overflow: auto;"> {{MonsterInfo Infobox |title= |image= |Author= |First Appearance = |Mod= |Usage Rights= |Attacks= |Special Abilities= |Radius= |Height= |HP= |Speed= |Attack Speed= |Accuracy= |ModDB= |Realm667= |Website= |Forum Thread= }} </syntaxhighlight><noinclude>[[Category:Template documentation]]</noinclude> 3eee297fad1bc334a1f65117b452ee31a034e744 514 513 2025-11-09T15:54:36Z MasterOfDisillusionment 431405 wikitext text/x-wiki This is an example MonsterInfo infobox using the DRUID infobox framework. = Copyable code for use on other content pages = If you want to create pages using this infobox, you can copy the code below. This code is for CONTENT PAGES ONLY. It does not have anything to do with changing what the template supports. A field can be left empty if the data for it is not needed. == Example Code == [[Attribute Scale Reference|If you haven't already, make sure you have read the page on how to correctly list actor stats.]] <syntaxhighlight lang="wikitext" style="overflow: auto;"> {{MonsterInfo Infobox |title= Monster Name |image= ImageFileName.png |Author= Name of author |First Appearance = In which game did this monster appear first? Ignore this if it's a user made custom monster and instead use the mod field below. |Mod= Name of the mod this monster belongs to. Ignore this if the monster comes from an official game. |Usage Rights= Specified is others are allowed to use this weapon in their own games or mods. If it comes from an official game, copyright applies by default. |Attacks= The attack the monster has, including the damage each does e.g. "Hitscan (23ATK)" Use bullet points if there is more than one. |Special Abilities= Optionally, add bullet points that list special abilities if there monster has any. |Radius= The radius of the monster as it is defined in the script code. |Height= The width of the monster as it is defined in the script code. |HP= How much health does this monster have? |Speed= How fast does this monster move? |Pain chance= Odds of entering the pain state when damaged. |Drops= How fast does this monster move? |ModDB= Link to the moddb page where this weapon or the mod it belongs to can be found. |Realm667= Ditto but for Realm667 |Website= Ditto but for the project website if there is one. |Forum Thread= Ditto but for the forum thread if there is one. }} </syntaxhighlight><noinclude>[[Category:Template documentation]]</noinclude> == Clean Version == <syntaxhighlight lang="wikitext" style="overflow: auto;"> {{MonsterInfo Infobox |title= |image= |Author= |First Appearance = |Mod= |Usage Rights= |Attacks= |Special Abilities= |Radius= |Height= |HP= |Speed= |Pain chance= |Drops= |ModDB= |Realm667= |Website= |Forum Thread= }} </syntaxhighlight><noinclude>[[Category:Template documentation]]</noinclude> fa4dd5d11ef596deb0d146bd11e3b54a4490a064 536 514 2025-11-09T20:19:29Z MasterOfDisillusionment 431405 wikitext text/x-wiki This is an example MonsterInfo infobox using the DRUID infobox framework. = Copyable code for use on other content pages = If you want to create pages using this infobox, you can copy the code below. This code is for CONTENT PAGES ONLY. It does not have anything to do with changing what the template supports. A field can be left empty if the data for it is not needed. == Example Code == [[Attribute Scale Reference|If you haven't already, make sure you have read the page on how to correctly list actor stats.]] <syntaxhighlight lang="wikitext" style="overflow: auto;"> {{MonsterInfo Infobox |title= Monster Name |image= ImageFileName.png |Author= Name of author |Game= The first game the monster appeared. Ignore this if it's a custom monster. |Mod= Name of the mod this monster belongs to. Ignore this if the monster comes from an official game. |Usage Rights= Specified is others are allowed to use this weapon in their own games or mods. If it comes from an official game, copyright applies by default. |Attacks= The attack the monster has, including the damage each does e.g. "Hitscan (23ATK)" Use bullet points if there is more than one. |Special Abilities= Optionally, add bullet points that list special abilities if there monster has any. |Radius= The radius of the monster as it is defined in the script code. |Height= The width of the monster as it is defined in the script code. |HP= How much health does this monster have? |Speed= How fast does this monster move? |Pain chance= Odds of entering the pain state when damaged. |Drops= How fast does this monster move? |ModDB= Link to the moddb page where this weapon or the mod it belongs to can be found. |Realm667= Ditto but for Realm667 |Website= Ditto but for the project website if there is one. |Forum Thread= Ditto but for the forum thread if there is one. }} </syntaxhighlight><noinclude>[[Category:Template documentation]]</noinclude> == Clean Version == <syntaxhighlight lang="wikitext" style="overflow: auto;"> {{MonsterInfo Infobox |title= |image= |Author= |Game= |Mod= |Usage Rights= |Attacks= |Special Abilities= |Radius= |Height= |HP= |Speed= |Pain chance= |Drops= |ModDB= |Realm667= |Website= |Forum Thread= }} </syntaxhighlight><noinclude>[[Category:Template documentation]]</noinclude> c31ab2f7a0b36250a9e98bba2cd81a4c588bfc18 544 536 2025-11-09T20:37:56Z MasterOfDisillusionment 431405 wikitext text/x-wiki This is an example MonsterInfo infobox using the DRUID infobox framework. = Copyable code for use on other content pages = If you want to create pages using this infobox, you can copy the code below. This code is for CONTENT PAGES ONLY. It does not have anything to do with changing what the template supports. A field can be left empty if the data for it is not needed. == Example Code == Before filling these out, make sure to read the pages on [[Attribute Scale Reference|Scale Reference]] and [[Usage Rights|Usage Rights]]. <syntaxhighlight lang="wikitext" style="overflow: auto;"> {{MonsterInfo Infobox |title= Monster Name |image= ImageFileName.png |Author= Name of author |Game= The first game the monster appeared. Ignore this if it's a custom monster. |Mod= Name of the mod this monster belongs to. Ignore this if the monster comes from an official game. |Usage Rights= Specified is others are allowed to use this weapon in their own games or mods. If it comes from an official game, copyright applies by default. |Attacks= The attack the monster has, including the damage each does e.g. "Hitscan (23ATK)" Use bullet points if there is more than one. |Special Abilities= Optionally, add bullet points that list special abilities if there monster has any. |Radius= The radius of the monster as it is defined in the script code. |Height= The width of the monster as it is defined in the script code. |HP= How much health does this monster have? |Speed= How fast does this monster move? |Pain chance= Odds of entering the pain state when damaged. |Drops= How fast does this monster move? |ModDB= Link to the moddb page where this weapon or the mod it belongs to can be found. |Realm667= Ditto but for Realm667 |Website= Ditto but for the project website if there is one. |Forum Thread= Ditto but for the forum thread if there is one. }} </syntaxhighlight><noinclude>[[Category:Template documentation]]</noinclude> == Clean Version == <syntaxhighlight lang="wikitext" style="overflow: auto;"> {{MonsterInfo Infobox |title= |image= |Author= |Game= |Mod= |Usage Rights= |Attacks= |Special Abilities= |Radius= |Height= |HP= |Speed= |Pain chance= |Drops= |ModDB= |Realm667= |Website= |Forum Thread= }} </syntaxhighlight><noinclude>[[Category:Template documentation]]</noinclude> ac549c89c466fedd619818cfddcc53cb25911939 Template:WeaponInfo Infobox/doc 10 327 507 498 2025-11-09T15:25:52Z MasterOfDisillusionment 431405 wikitext text/x-wiki This is an example WeaponInfo infobox using the DRUID infobox framework. = Copyable code for use on other content pages = If you want to create pages using this infobox, you can copy the code below. This code is for CONTENT PAGES ONLY. It does not have anything to do with changing what the template supports. A field can be left empty if the data for it is not needed. == Example Code == <syntaxhighlight lang="wikitext" style="overflow: auto;"> {{WeaponInfo Infobox |title= Weapon Name |image= ImageFileName.png |Author= Name of author |Mod= Name of the mod |Usage Rights= Specified is others are allowed to use this weapon in their own games or mods. |Weapon Type= Specify what type of weapon it is e.g. hitscan, projectile, melee, etc. |Ammo Type= Specify what type of ammo this weapon uses e.g. shell, bullets, plasma, etc. |Primary Fire= What does the primary fire do? E.g. single-shot, burst fire, full-auto, etc. |Secondary Fire= Ditto but for secondary fire (leave blank if there is none) |Requires Reloading= If the weapon must be reloaded after a certain number of shots, say Yes. Otherwise it's a No. |Radius= The radius of the weapon as it is defined in the script code. |Width= The width of the weapon as it is defined in the script code. |Slot= The weapon slot used by this weapon |Ammo Capacity= How much ammo can be carried for the weapon. If the weapon supports a Doom style backpack, list the regular and backpack value separately e.g. 100 (200 with backpack) |Damage= How much damage is done per shot. If the weapon fires multiple rounds per trigger-pull, the damage per bullet/projectile must be listed separately from the total amount e.g. 10 per bullet (250 total) |Rate of Fire= How fast the weapon fires on a scale of 1 to 5, with higher values being faster. |Accuracy= Ditto but for accuracy |Range= Ditto but for range. If the weapon ignores the concept of range, you can leave this empty. |ModDB= Link to the moddb page where this weapon or the mod it belongs to can be found. |Realm667= Ditto but for Realm667 |Website= Ditto but for the project website if there is one. |Forum Thread= Ditto but for the forum thread if there is one. }} </syntaxhighlight><noinclude>[[Category:Template documentation]]</noinclude> == Clean Version == <syntaxhighlight lang="wikitext" style="overflow: auto;"> {{WeaponInfo Infobox |title= |image= |Author= |Mod= |Usage Rights= |Weapon Type= |Ammo Type= |Primary Fire= |Secondary Fire= |Requires Reloading= |Radius= |Width= |Slot= |Ammo Capacity= |Damage= |Rate of Fire= |Accuracy= |Range= |ModDB= |Realm667= |Website= |Forum Thread= }} </syntaxhighlight><noinclude>[[Category:Template documentation]]</noinclude> 3eef9df3253a5042f2f2e32e26c7fa5a76812aac 508 507 2025-11-09T15:26:50Z MasterOfDisillusionment 431405 wikitext text/x-wiki This is an example WeaponInfo infobox using the DRUID infobox framework. = Copyable code for use on other content pages = If you want to create pages using this infobox, you can copy the code below. This code is for CONTENT PAGES ONLY. It does not have anything to do with changing what the template supports. A field can be left empty if the data for it is not needed. == Example Code == [[Attribute Scale Reference|If you haven't already, make sure you have read the page on how to correctly list actor stats.]] <syntaxhighlight lang="wikitext" style="overflow: auto;"> {{WeaponInfo Infobox |title= Weapon Name |image= ImageFileName.png |Author= Name of author |Mod= Name of the mod |Usage Rights= Specified is others are allowed to use this weapon in their own games or mods. |Weapon Type= Specify what type of weapon it is e.g. hitscan, projectile, melee, etc. |Ammo Type= Specify what type of ammo this weapon uses e.g. shell, bullets, plasma, etc. |Primary Fire= What does the primary fire do? E.g. single-shot, burst fire, full-auto, etc. |Secondary Fire= Ditto but for secondary fire (leave blank if there is none) |Requires Reloading= If the weapon must be reloaded after a certain number of shots, say Yes. Otherwise it's a No. |Radius= The radius of the weapon as it is defined in the script code. |Width= The width of the weapon as it is defined in the script code. |Slot= The weapon slot used by this weapon |Ammo Capacity= How much ammo can be carried for the weapon. If the weapon supports a Doom style backpack, list the regular and backpack value separately e.g. 100 (200 with backpack) |Damage= How much damage is done per shot. If the weapon fires multiple rounds per trigger-pull, the damage per bullet/projectile must be listed separately from the total amount e.g. 10 per bullet (250 total) |Rate of Fire= How fast the weapon fires on a scale of 1 to 5, with higher values being faster. |Accuracy= Ditto but for accuracy |Range= Ditto but for range. If the weapon ignores the concept of range, you can leave this empty. |ModDB= Link to the moddb page where this weapon or the mod it belongs to can be found. |Realm667= Ditto but for Realm667 |Website= Ditto but for the project website if there is one. |Forum Thread= Ditto but for the forum thread if there is one. }} </syntaxhighlight><noinclude>[[Category:Template documentation]]</noinclude> == Clean Version == <syntaxhighlight lang="wikitext" style="overflow: auto;"> {{WeaponInfo Infobox |title= |image= |Author= |Mod= |Usage Rights= |Weapon Type= |Ammo Type= |Primary Fire= |Secondary Fire= |Requires Reloading= |Radius= |Width= |Slot= |Ammo Capacity= |Damage= |Rate of Fire= |Accuracy= |Range= |ModDB= |Realm667= |Website= |Forum Thread= }} </syntaxhighlight><noinclude>[[Category:Template documentation]]</noinclude> 489e3a54a9a39a0f13eb3037a0eec00d18675998 529 508 2025-11-09T20:13:54Z MasterOfDisillusionment 431405 wikitext text/x-wiki This is an example WeaponInfo infobox using the DRUID infobox framework. = Copyable code for use on other content pages = If you want to create pages using this infobox, you can copy the code below. This code is for CONTENT PAGES ONLY. It does not have anything to do with changing what the template supports. A field can be left empty if the data for it is not needed. == Example Code == [[Attribute Scale Reference|If you haven't already, make sure you have read the page on how to correctly list actor stats.]] <syntaxhighlight lang="wikitext" style="overflow: auto;"> {{WeaponInfo Infobox |title= Weapon Name |image= ImageFileName.png |Author= Name of author |Mod= Name of the mod |Usage Rights= Specified is others are allowed to use this weapon in their own games or mods. |Weapon Type= Specify what type of weapon it is e.g. hitscan, projectile, melee, etc. |Ammo Type= Specify what type of ammo this weapon uses e.g. shell, bullets, plasma, etc. |Primary Fire= What does the primary fire do? E.g. single-shot, burst fire, full-auto, etc. |Secondary Fire= Ditto but for secondary fire (leave blank if there is none) |Requires Reloading= If the weapon must be reloaded after a certain number of shots, say Yes. Otherwise it's a No. |Radius= The radius of the weapon as it is defined in the script code. |Height= The width of the weapon as it is defined in the script code. |Slot= The weapon slot used by this weapon |Ammo Capacity= How much ammo can be carried for the weapon. If the weapon supports a Doom style backpack, list the regular and backpack value separately e.g. 100 (200 with backpack) |Damage= How much damage is done per shot. If the weapon fires multiple rounds per trigger-pull, the damage per bullet/projectile must be listed separately from the total amount e.g. 10 per bullet (250 total) |Rate of Fire= How fast the weapon fires on a scale of 1 to 5, with higher values being faster. |Accuracy= Ditto but for accuracy |Range= Ditto but for range. If the weapon ignores the concept of range, you can leave this empty. |ModDB= Link to the moddb page where this weapon or the mod it belongs to can be found. |Realm667= Ditto but for Realm667 |Website= Ditto but for the project website if there is one. |Forum Thread= Ditto but for the forum thread if there is one. }} </syntaxhighlight><noinclude>[[Category:Template documentation]]</noinclude> == Clean Version == <syntaxhighlight lang="wikitext" style="overflow: auto;"> {{WeaponInfo Infobox |title= |image= |Author= |Mod= |Usage Rights= |Weapon Type= |Ammo Type= |Primary Fire= |Secondary Fire= |Requires Reloading= |Radius= |Height= |Slot= |Ammo Capacity= |Damage= |Rate of Fire= |Accuracy= |Range= |ModDB= |Realm667= |Website= |Forum Thread= }} </syntaxhighlight><noinclude>[[Category:Template documentation]]</noinclude> ef0254cb66e60817213dd51a91f6b46bf68e5815 543 529 2025-11-09T20:37:15Z MasterOfDisillusionment 431405 wikitext text/x-wiki This is an example WeaponInfo infobox using the DRUID infobox framework. = Copyable code for use on other content pages = If you want to create pages using this infobox, you can copy the code below. This code is for CONTENT PAGES ONLY. It does not have anything to do with changing what the template supports. A field can be left empty if the data for it is not needed. == Example Code == Before filling these out, make sure to read the pages on [[Attribute Scale Reference|Scale Reference]] and [[Usage Rights|Usage Rights]]. <syntaxhighlight lang="wikitext" style="overflow: auto;"> {{WeaponInfo Infobox |title= Weapon Name |image= ImageFileName.png |Author= Name of author |Mod= Name of the mod |Usage Rights= Specified is others are allowed to use this weapon in their own games or mods. |Weapon Type= Specify what type of weapon it is e.g. hitscan, projectile, melee, etc. |Ammo Type= Specify what type of ammo this weapon uses e.g. shell, bullets, plasma, etc. |Primary Fire= What does the primary fire do? E.g. single-shot, burst fire, full-auto, etc. |Secondary Fire= Ditto but for secondary fire (leave blank if there is none) |Requires Reloading= If the weapon must be reloaded after a certain number of shots, say Yes. Otherwise it's a No. |Radius= The radius of the weapon as it is defined in the script code. |Height= The width of the weapon as it is defined in the script code. |Slot= The weapon slot used by this weapon |Ammo Capacity= How much ammo can be carried for the weapon. If the weapon supports a Doom style backpack, list the regular and backpack value separately e.g. 100 (200 with backpack) |Damage= How much damage is done per shot. If the weapon fires multiple rounds per trigger-pull, the damage per bullet/projectile must be listed separately from the total amount e.g. 10 per bullet (250 total) |Rate of Fire= How fast the weapon fires on a scale of 1 to 5, with higher values being faster. |Accuracy= Ditto but for accuracy |Range= Ditto but for range. If the weapon ignores the concept of range, you can leave this empty. |ModDB= Link to the moddb page where this weapon or the mod it belongs to can be found. |Realm667= Ditto but for Realm667 |Website= Ditto but for the project website if there is one. |Forum Thread= Ditto but for the forum thread if there is one. }} </syntaxhighlight><noinclude>[[Category:Template documentation]]</noinclude> == Clean Version == <syntaxhighlight lang="wikitext" style="overflow: auto;"> {{WeaponInfo Infobox |title= |image= |Author= |Mod= |Usage Rights= |Weapon Type= |Ammo Type= |Primary Fire= |Secondary Fire= |Requires Reloading= |Radius= |Height= |Slot= |Ammo Capacity= |Damage= |Rate of Fire= |Accuracy= |Range= |ModDB= |Realm667= |Website= |Forum Thread= }} </syntaxhighlight><noinclude>[[Category:Template documentation]]</noinclude> 118013f7d509a8095c2ad9502fc3f2465065a9cb File:Zombieman.png 6 335 509 2025-11-09T15:37:13Z MasterOfDisillusionment 431405 Front idle sprite wikitext text/x-wiki == Summary == Front idle sprite == Licensing == {{License|fairuse}} cb4457cfd0e87d27f789df94f252316008e0ab51 Doom 0 306 510 461 2025-11-09T15:39:39Z MasterOfDisillusionment 431405 wikitext text/x-wiki {{GameInfo Infobox |title= Doom |image= DoomCover.jpg |Release date= 1993 |Engine= id Tech 1 |Setting/Theme= Sci-fi military, satanic. |Latest Version= 1.9 |Developer(s)= id Software |Publisher(s)= id Software |Mod support= Extensive; source port is public and numerous tools exist. |Notable mods/total conversions= * Brutal Doom * Final Doomer+ * Plutona 2 |Official website= |Steam page= [[https://store.steampowered.com/app/2280/DOOM__DOOM_II/| DOOM & DOOM II]] |GOG page= [[https://www.gog.com/en/game/doom_doom_ii| DOOM & DOOM II]] |ModDB page= }} Doom is a first person shooter action game created by Id Software and published in 1993. == Gameplay == === Mechanics === Insert Content. === Weapons === Insert Content. === Enemies === Insert Content. === Levels === Insert Content. == Setting and Story == === Plot === Insert Content. === Characters === Insert Content. == Design == === Graphics & Audio === Insert Content. === Visuals === Insert Content. == Development History == === Early Concepts === Insert Content. === Beta === Insert Content. === Final Build === Insert Content. [[Category:Game Information]] 441cf8ea45fb3df824edaee487ba3656d04460dc 512 510 2025-11-09T15:42:41Z MasterOfDisillusionment 431405 wikitext text/x-wiki {{GameInfo Infobox |title= Doom |image= DoomCover.jpg |Release date= 1993 |Engine= id Tech 1 |Setting/Theme= Sci-fi military, satanic. |Latest Version= 1.9 |Developer(s)= id Software |Publisher(s)= id Software |Mod support= Extensive; source port is public and numerous tools exist. |Notable mods/total conversions= * Brutal Doom * Final Doomer+ * Plutona 2 |Official website= |Steam page= [[https://store.steampowered.com/app/2280/DOOM__DOOM_II/| DOOM & DOOM II]] |GOG page= [[https://www.gog.com/en/game/doom_doom_ii| DOOM & DOOM II]] |ModDB page= }} Doom is a first person shooter action game created by Id Software and published in 1993. == Gameplay == === Mechanics === Insert Content. === Weapons === Insert Content. === Enemies === * [[Zombieman]] === Levels === Insert Content. == Setting and Story == === Plot === Insert Content. === Characters === Insert Content. == Design == === Graphics & Audio === Insert Content. === Visuals === Insert Content. == Development History == === Early Concepts === Insert Content. === Beta === Insert Content. === Final Build === Insert Content. [[Category:Game Information]] 2796909c397d013b693025b7d28568895b099dad 522 512 2025-11-09T17:13:59Z MasterOfDisillusionment 431405 wikitext text/x-wiki {{GameInfo Infobox |title= Doom |image= DoomCover.jpg |Release date= 1993 |Engine= id Tech 1 |Setting/Theme= Sci-fi military, satanic. |Latest Version= 1.9 |Developer(s)= id Software |Publisher(s)= id Software |Mod support= Extensive; source port is public and numerous tools exist. |Notable mods/total conversions= * Brutal Doom * Final Doomer+ * Plutona 2 |Official website= |Steam page= [[https://store.steampowered.com/app/2280/DOOM__DOOM_II/| DOOM & DOOM II]] |GOG page= [[https://www.gog.com/en/game/doom_doom_ii| DOOM & DOOM II]] |ModDB page= }} Doom is a first person shooter action game created by Id Software and published in 1993. == Gameplay == === Mechanics === Insert Content. === Weapons === Insert Content. === Items === * [[Stimpack]] * Item 2 * Item 3 === Enemies === * [[Zombieman]] === Levels === Insert Content. == Setting and Story == === Plot === Insert Content. === Characters === Insert Content. == Design == === Graphics & Audio === Insert Content. === Visuals === Insert Content. == Development History == === Early Concepts === Insert Content. === Beta === Insert Content. === Final Build === Insert Content. [[Category:Game Information]] 14594e9d2896349546479f5f6fbd4a7ce8bd4af0 Malefact 0 309 511 383 2025-11-09T15:41:38Z MasterOfDisillusionment 431405 wikitext text/x-wiki {{GameInfo |title= Malefact: Evil Unchained |image= MalefactCover.png |Release date= Unreleased |Engine= [[UZDoom Engine]] |Setting/Theme= Fantasy-horror, satanic, grimdark. |Latest Version= 0.2 (Dev Build only) |Developer(s)= [[GoreMaxxed Productions]] |Publisher(s)= [[GoreMaxxed Productions]] |Mod support= Extensive; uses same tools as other UZDoom engine games |Notable mods/total conversions= |Official website= |Steam page= |GOG page= |ModDB page= }} Malefact is a fantasy horror boomer shooter in development by [[GoreMaxxed Productions]]. The project is led by [[hardcore_gamer]], with a demo version expected to release in Q1 2026. The game is built on the UZDoom engine. == Gameplay == === Mechanics === The movement system in Malefact uses the same foundation as other Doom engine games but with free-mouse aiming controls in mind. In a departure from most titles in the genre, the game employs slower movement speeds and disables sprinting by default for a more immersive horror experience. Players can only achieve faster movement through temporary power-ups that boost speed for limited durations. A central gameplay element comes in the form of the [[Books of Destruction]], magical tomes that provide access to various spells and abilities. While a book is equipped or selected, both the player character and all enemies freeze in place, creating a tactical pause system that allows for spell selection without the pressure of taking damage. As is tradition with games of this genre, levels feature secret areas, but Malefact handles this slightly differently. Instead of marking specific areas (e.g. 'map sectors') as secrets, each level contains exactly three locked doors requiring corresponding [[Secret Key|secret keys]] hidden throughout the environment. This standardized approach means every level in the base game contains precisely three secrets, providing consistent exploration objectives across all stages. Mappers can still add secrets to their user-made levels the conventional way, however. === Weapons === Malefact features an arsenal of conventional and magical weapons, complemented by the four Books of Destruction. The confirmed weapons include: * Knife - A serial killer-esque Buck knife. * Colt Revolver - Wild West-styled firearm available in single and dual-wielded mode. * Sawed-off Shotgun - Wild West inspired double-barrel sawed-off shotgun. * Stake Gun - Steampunk-inspired rapid-fire stake launcher. * Hellmasher - A demonic club constructed from satanic wood and flesh that launches spectral projectiles which travel a limited distance before self-destructing. * Grim Reaper's Scythe - Unleashes horizontal spreads of energy projectiles while providing health regeneration from defeated enemies. As with projectiles thrown by the Hellmasher, the ones used by the Scythe can only travel a limited distance before self-destructing. * The Books of Destruction serve as the game's magic system, with four books currently planned. Each book contains three distinct spells, though specific abilities remain subject to change during ongoing development. === Enemies === While the final enemy roster remains in development, the completed game will feature between twelve and seventeen distinct enemy types. The upcoming demo has confirmed three enemies that players will encounter: * Sloth: Basic zombie-like fodder enemy. * Craver: Low-to-mid tier melee type. * Warden: Low-tier warrior class enemy capable of both melee strikes and ranged projectile attacks. === Levels === Malefact's campaign structure will consist of four episodes at launch, containing twelve levels each: * Episode 1: The Weeping Know No Joy – Takes place within the Damnatorum and its extensive torture dungeon complexes. * Episode 2: The Fields That Burn – Takes place on the infernal planes and in various hellish interpretations of rural landscapes and locations. * Episode 3: No Flag Flies for the Damned – A series of heavily fortified strongholds protecting the Gate of Hell, representing the most defended territory in the infernal realm. * Episode 4: Holocaust of the Living – Shifts the action to Earth, where Malefact unleashes destruction following his successful escape from Hell and subsequent transformation into a [[Chaos Demon]]. Additional expansion episodes may be developed following the game's release, though no official confirmation exists regarding post-launch content. == Setting and Story == === Plot === Players control Malefact, an undead serial killer condemned to eternal torment within the Damnatorum, Hell's deepest and most horrific dungeon complex reserved exclusively for the most irredeemable sinners. Prior to the game's events, Malefact receives a direct mental communication from God himself, offering unholy powers capable of facilitating escape from his prison of suffering. The divine proposition requires Malefact to wage war against Hell itself in exchange for these abilities. Despite God's acknowledgment that this path will likely result in Malefact's destruction, both parties recognize Malefact's indifference to his own fate. The game begins with Malefact's newfound freedom and his campaign of destruction against Hell's dominion. However, God's scheme backfires spectacularly when Malefact successfully completes his rampage through Hell, escapes to Earth, and initiates Armageddon upon humanity. === Characters === Malefact is currently the only confirmed named character within the game's setting, the title having been earned through infamy rather than serving as his actual identity, which remains unknown. The specifics of his backstory are shrouded in mystery, with little known beyond the fact that he lived and operated as a serial killer in mid-nineteenth-century frontier America before his damnation. == Design == === Music & Audio === Levels feature ambient drones and atmospheric textures as their baseline soundscape, similar to Doom 64 or the PlayStation version of Doom. During scripted sequences or intense combat encounters, the soundtrack may sometimes shift to include instrumental tracks and death metal riffs appropriate to the game's dark thematic elements. Certain levels, like the introductory maps and final boss encounters, exclusively use instrumental tracks. === Visuals & Graphics === The game’s graphical assets are created in the same resolutions as those of its classic counterparts, with low texture resolutions by modern standards, yet without the technical color limitations that constrained developers during the 1990s. The resulting aesthetic is distinctly retro whilst simultaneously benefiting from modern technology. Stylistically, the game’s mood is grim and gloomy, making heavy use of dark colors such as gray and black mixed with warm tones like red and orange. The game’s interpretation of hell is partly inspired by horror films such as the Hellraiser series and Event Horizon, both of which depict their own versions of hell. == Development History == === Early Concepts === Development of Malefact began in late 2023, when [[hardcore_gamer]] started assembling a team to create a horror-focused first-person shooter using the GZDoom engine. Early development faced difficulties in finding suitable talent until artist Stefan joined the project, proving exceptionally well-suited to realizing the game’s grimdark aesthetic. Other hopefuls had submitted their own attempts but were ultimately rejected for failing to meet hardcore_gamer’s creative vision. Later, hardcore_gamer founded [[GoreMaxxed Productions]]. Original design concepts included an elaborate spell selection interface resembling a physical spellbook menu system. Complete graphics were produced for this feature before technical limitations within the UZDoom engine necessitated abandonment of the complex interface in favor of the current spellbook item implementation. The tactical pause mechanic that freezes gameplay during spell selection survived this design transition and remains a core gameplay element. === Alpha Demo === The demo version scheduled for Q1 2026 will include two complete levels, several weapons from the main arsenal, three enemy types, and the first Book of Destruction. Access to the demo requires players to join the Discord server and register as beta testers. [[Category:Game Information]] 49bd46a0896c1cb3b4d6e822489b900f58681b81 Zombieman 0 336 515 2025-11-09T15:55:07Z MasterOfDisillusionment 431405 Created page with "{{MonsterInfo Infobox |title= Zombieman |image= zombieman.png |Author= Id Software |First Appearance = Doom |Mod= |Usage Rights= Copyrighted |Attacks= Hitscan (10/12/23) |Special Abilities= None |Radius= 20 |Height= 56 |HP= 200 |Speed= 8 |Pain chance= 200 |Drops= Clip |ModDB= NA |Realm667= NA |Website= NA |Forum Thread= NA }} Zombieman are an enemy in Doom. [[Category:Monsters]]" wikitext text/x-wiki {{MonsterInfo Infobox |title= Zombieman |image= zombieman.png |Author= Id Software |First Appearance = Doom |Mod= |Usage Rights= Copyrighted |Attacks= Hitscan (10/12/23) |Special Abilities= None |Radius= 20 |Height= 56 |HP= 200 |Speed= 8 |Pain chance= 200 |Drops= Clip |ModDB= NA |Realm667= NA |Website= NA |Forum Thread= NA }} Zombieman are an enemy in Doom. [[Category:Monsters]] a118f52af37bed88306aee6c3561b2cd8bcd7601 516 515 2025-11-09T15:56:31Z MasterOfDisillusionment 431405 wikitext text/x-wiki {{MonsterInfo Infobox |title= Zombieman |image= zombieman.png |Author= Id Software |First Appearance = Doom |Mod= |Usage Rights= Copyrighted |Attacks= Hitscan (10/12/23) |Special Abilities= None |Radius= 20 |Height= 56 |HP= 200 |Speed= 8 |Pain chance= 200 |Drops= Clip |ModDB= NA |Realm667= NA |Website= NA |Forum Thread= NA }} Zombiemen are an enemy in Doom. [[Category:Monsters]] 23e3e65aba3c2692901b7b621b8d419edcbba082 517 516 2025-11-09T15:58:33Z MasterOfDisillusionment 431405 wikitext text/x-wiki {{MonsterInfo Infobox |title= Zombieman |image= zombieman.png |Author= Id Software |First Appearance = Doom |Mod= |Usage Rights= Copyrighted |Attacks= Hitscan (10/12/23) |Special Abilities= None |Radius= 20 |Height= 56 |HP= 200 |Speed= 8 |Pain chance= 200 |Drops= Clip |ModDB= NA |Realm667= NA |Website= NA |Forum Thread= NA }} Zombiemen are an enemy in Doom. == Behavior == Sed ut perspiciatis unde omnis iste natus error sit voluptatem accusantium doloremque laudantium, totam rem aperiam, eaque ipsa quae ab illo inventore veritatis et quasi architecto beatae vitae dicta sunt explicabo. == How To Use In Maps == Sed ut perspiciatis unde omnis iste natus error sit voluptatem accusantium doloremque laudantium, totam rem aperiam, eaque ipsa quae ab illo inventore veritatis et quasi architecto beatae vitae dicta sunt explicabo. [[Category:Monsters]] cb65db6d1b10e83d6c734f4418a87d09fbf939b9 519 517 2025-11-09T16:11:05Z MasterOfDisillusionment 431405 wikitext text/x-wiki {{MonsterInfo Infobox |title= Zombieman |image= zombieman.png |Author= Id Software |First Appearance = Doom |Mod= |Usage Rights= Copyrighted |Attacks= Hitscan (10/12/23) |Special Abilities= None |Radius= 20 |Height= 56 |HP= 200 |Speed= 8 |Pain chance= 200 |Drops= Clip |ModDB= |Realm667= |Website= |Forum Thread= }} Zombiemen are an enemy in Doom. == Behavior == Sed ut perspiciatis unde omnis iste natus error sit voluptatem accusantium doloremque laudantium, totam rem aperiam, eaque ipsa quae ab illo inventore veritatis et quasi architecto beatae vitae dicta sunt explicabo. == How To Use In Maps == Sed ut perspiciatis unde omnis iste natus error sit voluptatem accusantium doloremque laudantium, totam rem aperiam, eaque ipsa quae ab illo inventore veritatis et quasi architecto beatae vitae dicta sunt explicabo. [[Category:Monsters]] 65b0118f5c67be0569aa83316c5833dc445bb9c4 520 519 2025-11-09T16:32:05Z MasterOfDisillusionment 431405 wikitext text/x-wiki {{MonsterInfo Infobox |title= Zombieman |image= zombieman.png |Author= Id Software |First Appearance = Doom |Mod= |Usage Rights= Copyrighted |Attacks= Hitscan (10/12/23) |Special Abilities= None |Radius= 20 |Height= 56 |HP= 200 |Speed= 8 |Pain chance= 200 |Drops= Clip |ModDB= |Realm667= |Website= |Forum Thread= }} Zombiemen are an enemy in Doom. == Behavior == Lorem ipsum dolor sit amet, consectetur adipiscing elit, sed do eiusmod tempor incididunt ut labore et dolore magna aliqua. Ut enim ad minim veniam, quis nostrud exercitation ullamco laboris nisi ut aliquip ex ea commodo consequat. Duis aute irure dolor in reprehenderit in voluptate velit esse cillum dolore eu fugiat nulla pariatur. Excepteur sint occaecat cupidatat non proident, sunt in culpa qui officia deserunt mollit anim id est laborum. == Placement Strategies == Lorem ipsum dolor sit amet, consectetur adipiscing elit, sed do eiusmod tempor incididunt ut labore et dolore magna aliqua. Ut enim ad minim veniam, quis nostrud exercitation ullamco laboris nisi ut aliquip ex ea commodo consequat. Duis aute irure dolor in reprehenderit in voluptate velit esse cillum dolore eu fugiat nulla pariatur. Excepteur sint occaecat cupidatat non proident, sunt in culpa qui officia deserunt mollit anim id est laborum. [[Category:Monsters]] 5a3a6f7e24cadd966e16469e5e5c15f40c73c432 537 520 2025-11-09T20:19:39Z MasterOfDisillusionment 431405 wikitext text/x-wiki {{MonsterInfo Infobox |title= Zombieman |image= zombieman.png |Author= Id Software |Game = [[Doom]] |Mod= |Usage Rights= In-game only |Attacks= Hitscan (10/12/23) |Special Abilities= None |Radius= 20 |Height= 56 |HP= 200 |Speed= 8 |Pain chance= 200 |Drops= Clip |ModDB= |Realm667= |Website= |Forum Thread= }} Zombiemen are an enemy in [[Doom]]. == Behavior == Lorem ipsum dolor sit amet, consectetur adipiscing elit, sed do eiusmod tempor incididunt ut labore et dolore magna aliqua. Ut enim ad minim veniam, quis nostrud exercitation ullamco laboris nisi ut aliquip ex ea commodo consequat. Duis aute irure dolor in reprehenderit in voluptate velit esse cillum dolore eu fugiat nulla pariatur. Excepteur sint occaecat cupidatat non proident, sunt in culpa qui officia deserunt mollit anim id est laborum. == Placement Strategies == Lorem ipsum dolor sit amet, consectetur adipiscing elit, sed do eiusmod tempor incididunt ut labore et dolore magna aliqua. Ut enim ad minim veniam, quis nostrud exercitation ullamco laboris nisi ut aliquip ex ea commodo consequat. Duis aute irure dolor in reprehenderit in voluptate velit esse cillum dolore eu fugiat nulla pariatur. Excepteur sint occaecat cupidatat non proident, sunt in culpa qui officia deserunt mollit anim id est laborum. [[Category:Monsters]] 18be76cf61402fd1cf37798ab7c6df67d2e813d8 538 537 2025-11-09T20:21:05Z MasterOfDisillusionment 431405 wikitext text/x-wiki {{MonsterInfo Infobox |title= Zombieman |image= zombieman.png |Author= Id Software |Game = [[Doom]] |Mod= |Usage Rights= In-game only |Attacks= Hitscan (10/12/23) |Special Abilities= None |Radius= 20 |Height= 56 |HP= 20 |Speed= 8 |Pain chance= 200 |Drops= Clip |ModDB= |Realm667= |Website= |Forum Thread= }} Zombiemen are an enemy in [[Doom]]. == Behavior == Lorem ipsum dolor sit amet, consectetur adipiscing elit, sed do eiusmod tempor incididunt ut labore et dolore magna aliqua. Ut enim ad minim veniam, quis nostrud exercitation ullamco laboris nisi ut aliquip ex ea commodo consequat. Duis aute irure dolor in reprehenderit in voluptate velit esse cillum dolore eu fugiat nulla pariatur. Excepteur sint occaecat cupidatat non proident, sunt in culpa qui officia deserunt mollit anim id est laborum. == Placement Strategies == Lorem ipsum dolor sit amet, consectetur adipiscing elit, sed do eiusmod tempor incididunt ut labore et dolore magna aliqua. Ut enim ad minim veniam, quis nostrud exercitation ullamco laboris nisi ut aliquip ex ea commodo consequat. Duis aute irure dolor in reprehenderit in voluptate velit esse cillum dolore eu fugiat nulla pariatur. Excepteur sint occaecat cupidatat non proident, sunt in culpa qui officia deserunt mollit anim id est laborum. [[Category:Monsters]] 68495ef50b317f6a7b95ad9c3a896d7ad5805b05 539 538 2025-11-09T20:22:28Z MasterOfDisillusionment 431405 wikitext text/x-wiki {{MonsterInfo Infobox |title= Zombieman |image= zombieman.png |Author= Id Software |Game = [[Doom]] |Mod= |Usage Rights= [[Usage Rights|In-game only]] |Attacks= Hitscan (10/12/23) |Special Abilities= None |Radius= 20 |Height= 56 |HP= 20 |Speed= 8 |Pain chance= 200 |Drops= Clip |ModDB= |Realm667= |Website= |Forum Thread= }} Zombiemen are an enemy in [[Doom]]. == Behavior == Lorem ipsum dolor sit amet, consectetur adipiscing elit, sed do eiusmod tempor incididunt ut labore et dolore magna aliqua. Ut enim ad minim veniam, quis nostrud exercitation ullamco laboris nisi ut aliquip ex ea commodo consequat. Duis aute irure dolor in reprehenderit in voluptate velit esse cillum dolore eu fugiat nulla pariatur. Excepteur sint occaecat cupidatat non proident, sunt in culpa qui officia deserunt mollit anim id est laborum. == Placement Strategies == Lorem ipsum dolor sit amet, consectetur adipiscing elit, sed do eiusmod tempor incididunt ut labore et dolore magna aliqua. Ut enim ad minim veniam, quis nostrud exercitation ullamco laboris nisi ut aliquip ex ea commodo consequat. Duis aute irure dolor in reprehenderit in voluptate velit esse cillum dolore eu fugiat nulla pariatur. Excepteur sint occaecat cupidatat non proident, sunt in culpa qui officia deserunt mollit anim id est laborum. [[Category:Monsters]] adf9066478ac9723a0b802cae63d439593c391c8 Category:Monsters 14 337 518 2025-11-09T16:06:41Z MasterOfDisillusionment 431405 Created page with "Pages related to monster and enemy actors, both official and user-created, are listed here. [[Category:Monsters]]" wikitext text/x-wiki Pages related to monster and enemy actors, both official and user-created, are listed here. [[Category:Monsters]] ffec373f90c3e3646139e88f31b0d703b76d34bb Assault Rifle 0 325 521 497 2025-11-09T16:35:59Z MasterOfDisillusionment 431405 wikitext text/x-wiki {{WeaponInfo Infobox |title= Assault Rifle |image= WeaponAssaultRifle.png |Author= [[GoreMaxxed Productions]] |Mod= [[Absolute Doom]] |Usage Rights= Must Give Credit |Weapon Type= Hitscan |Ammo Type= Magazine |Primary Fire= Auto-fire |Secondary Fire= |Requires Reloading= No |Radius= 16 |Height= 25 |Slot= 3 |Ammo Capacity= 100 |Damage= 15 per bullet |Rate of Fire= High |Accuracy= High |Range= |ModDB= |Realm667= |Website= |Forum Thread= }} The assault rifle is a new weapon featured in the [[Absolute Doom]] mod. == Behavior == Lorem ipsum dolor sit amet, consectetur adipiscing elit, sed do eiusmod tempor incididunt ut labore et dolore magna aliqua. Ut enim ad minim veniam, quis nostrud exercitation ullamco laboris nisi ut aliquip ex ea commodo consequat. Duis aute irure dolor in reprehenderit in voluptate velit esse cillum dolore eu fugiat nulla pariatur. Excepteur sint occaecat cupidatat non proident, sunt in culpa qui officia deserunt mollit anim id est laborum. == Placement Strategies == Lorem ipsum dolor sit amet, consectetur adipiscing elit, sed do eiusmod tempor incididunt ut labore et dolore magna aliqua. Ut enim ad minim veniam, quis nostrud exercitation ullamco laboris nisi ut aliquip ex ea commodo consequat. Duis aute irure dolor in reprehenderit in voluptate velit esse cillum dolore eu fugiat nulla pariatur. Excepteur sint occaecat cupidatat non proident, sunt in culpa qui officia deserunt mollit anim id est laborum. [[Category:Weapons]] aa2deb73c4992f37633826d0761346ba5ec669ca Stimpack 0 338 523 2025-11-09T17:14:57Z MasterOfDisillusionment 431405 Created page with "Stimpacks are health pickups in Doom. They restore 10HP. == Behavior == Lorem ipsum dolor sit amet, consectetur adipiscing elit, sed do eiusmod tempor incididunt ut labore et dolore magna aliqua. Ut enim ad minim veniam, quis nostrud exercitation ullamco laboris nisi ut aliquip ex ea commodo consequat. Duis aute irure dolor in reprehenderit in voluptate velit esse cillum dolore eu fugiat nulla pariatur. Excepteur sint occaecat cupidatat non proident, sunt in culpa qui..." wikitext text/x-wiki Stimpacks are health pickups in Doom. They restore 10HP. == Behavior == Lorem ipsum dolor sit amet, consectetur adipiscing elit, sed do eiusmod tempor incididunt ut labore et dolore magna aliqua. Ut enim ad minim veniam, quis nostrud exercitation ullamco laboris nisi ut aliquip ex ea commodo consequat. Duis aute irure dolor in reprehenderit in voluptate velit esse cillum dolore eu fugiat nulla pariatur. Excepteur sint occaecat cupidatat non proident, sunt in culpa qui officia deserunt mollit anim id est laborum. == Placement Strategies == Lorem ipsum dolor sit amet, consectetur adipiscing elit, sed do eiusmod tempor incididunt ut labore et dolore magna aliqua. Ut enim ad minim veniam, quis nostrud exercitation ullamco laboris nisi ut aliquip ex ea commodo consequat. Duis aute irure dolor in reprehenderit in voluptate velit esse cillum dolore eu fugiat nulla pariatur. Excepteur sint occaecat cupidatat non proident, sunt in culpa qui officia deserunt mollit anim id est laborum. [[Category:Items]] 548b11a553990911f688ef2eab050fea9573d852 532 523 2025-11-09T20:15:49Z MasterOfDisillusionment 431405 wikitext text/x-wiki {{ItemInfo Infobox |title= Stimpack |image= ItemStimpack.png |Author(s)= Id Software |Game= Doom |Mod= |Usage Rights= In-game only |Item Type= Health |Effect(s)= Gives +10HP |Radius= 20 |Height= 16 |Amount Given= 1 |Effect Duration= NA |ModDB= 1 |Realm667= 1 |Website= 1 |Forum Thread= 1 }} Stimpacks are health pickups in Doom. They restore 10HP. == Behavior == Lorem ipsum dolor sit amet, consectetur adipiscing elit, sed do eiusmod tempor incididunt ut labore et dolore magna aliqua. Ut enim ad minim veniam, quis nostrud exercitation ullamco laboris nisi ut aliquip ex ea commodo consequat. Duis aute irure dolor in reprehenderit in voluptate velit esse cillum dolore eu fugiat nulla pariatur. Excepteur sint occaecat cupidatat non proident, sunt in culpa qui officia deserunt mollit anim id est laborum. == Placement Strategies == Lorem ipsum dolor sit amet, consectetur adipiscing elit, sed do eiusmod tempor incididunt ut labore et dolore magna aliqua. Ut enim ad minim veniam, quis nostrud exercitation ullamco laboris nisi ut aliquip ex ea commodo consequat. Duis aute irure dolor in reprehenderit in voluptate velit esse cillum dolore eu fugiat nulla pariatur. Excepteur sint occaecat cupidatat non proident, sunt in culpa qui officia deserunt mollit anim id est laborum. [[Category:Items]] c48b4f001538aca9443dfba5e06c5b9bcc6a8418 533 532 2025-11-09T20:16:19Z MasterOfDisillusionment 431405 wikitext text/x-wiki {{ItemInfo Infobox |title= Stimpack |image= ItemStimpack.png |Author(s)= Id Software |Game= Doom |Mod= |Usage Rights= In-game only |Item Type= Health |Effect(s)= Gives +10HP |Radius= 20 |Height= 16 |Amount Given= 1 |Effect Duration= |ModDB= |Realm667= |Website= |Forum Thread= }} Stimpacks are health pickups in Doom. They restore 10HP. == Behavior == Lorem ipsum dolor sit amet, consectetur adipiscing elit, sed do eiusmod tempor incididunt ut labore et dolore magna aliqua. Ut enim ad minim veniam, quis nostrud exercitation ullamco laboris nisi ut aliquip ex ea commodo consequat. Duis aute irure dolor in reprehenderit in voluptate velit esse cillum dolore eu fugiat nulla pariatur. Excepteur sint occaecat cupidatat non proident, sunt in culpa qui officia deserunt mollit anim id est laborum. == Placement Strategies == Lorem ipsum dolor sit amet, consectetur adipiscing elit, sed do eiusmod tempor incididunt ut labore et dolore magna aliqua. Ut enim ad minim veniam, quis nostrud exercitation ullamco laboris nisi ut aliquip ex ea commodo consequat. Duis aute irure dolor in reprehenderit in voluptate velit esse cillum dolore eu fugiat nulla pariatur. Excepteur sint occaecat cupidatat non proident, sunt in culpa qui officia deserunt mollit anim id est laborum. [[Category:Items]] 0542283fd5e5f4d9735f80889fc389b6e5e6d76c Category:Items 14 339 524 2025-11-09T17:15:41Z MasterOfDisillusionment 431405 Created page with "All items, pickups and powerups are listed on this page. [[Category:Items]]" wikitext text/x-wiki All items, pickups and powerups are listed on this page. [[Category:Items]] a8d48103dc68a7f03d5c4584e1b5de69ab505da2 Template:ItemInfo Infobox 10 340 525 2025-11-09T19:56:01Z MasterOfDisillusionment 431405 Created page with "<includeonly>{{#invoke:Infobox|main |kind=ItemInfo Infobox |sep=, |image={{#if:{{{image|}}}|[[File:{{{image}}}{{!}}300px]]}} |sections=General Info, Behavior, Stats, External Links |General Info=Author, Game, Mod, Usage Rights |Behavior=Item Type, Effect(s) |Stats=Radius, Height, Amount Given, Effect Duration |External Links=ModDB, Realm667, Website, Forum Thread }}</includeonly><noinclude> {{documentation}} [[Category:Infobox templates]] </noinclude>" wikitext text/x-wiki <includeonly>{{#invoke:Infobox|main |kind=ItemInfo Infobox |sep=, |image={{#if:{{{image|}}}|[[File:{{{image}}}{{!}}300px]]}} |sections=General Info, Behavior, Stats, External Links |General Info=Author, Game, Mod, Usage Rights |Behavior=Item Type, Effect(s) |Stats=Radius, Height, Amount Given, Effect Duration |External Links=ModDB, Realm667, Website, Forum Thread }}</includeonly><noinclude> {{documentation}} [[Category:Infobox templates]] </noinclude> 71fbd7fd6f9d6f52064c8a7dfa3bf6764b76a7fc 526 525 2025-11-09T19:57:26Z MasterOfDisillusionment 431405 wikitext text/x-wiki <includeonly>{{#invoke:Infobox|main |kind=ItemInfo Infobox |sep=, |image={{#if:{{{image|}}}|[[File:{{{image}}}{{!}}300px]]}} |sections=General Info, Behavior, Stats, External Links |General Info=Author(s), Game, Mod, Usage Rights |Behavior=Item Type, Effect(s) |Stats=Radius, Height, Amount Given, Effect Duration |External Links=ModDB, Realm667, Website, Forum Thread }}</includeonly><noinclude> {{documentation}} [[Category:Infobox templates]] </noinclude> ce84e61cd4d5c3a9af414274cbc045765edb277f 530 526 2025-11-09T20:14:44Z MasterOfDisillusionment 431405 wikitext text/x-wiki <includeonly>{{#invoke:Infobox|main |kind=ItemInfo Infobox |sep=, |image={{#if:{{{image|}}}|[[File:{{{image}}}{{!}}150px]]}} |sections=General Info, Behavior, Stats, External Links |General Info=Author(s), Game, Mod, Usage Rights |Behavior=Item Type, Effect(s) |Stats=Radius, Height, Amount Given, Effect Duration |External Links=ModDB, Realm667, Website, Forum Thread }}</includeonly><noinclude> {{documentation}} [[Category:Infobox templates]] </noinclude> 6b0989e7841f75892cf4813d6d7b18caabaefa4e 531 530 2025-11-09T20:15:44Z MasterOfDisillusionment 431405 wikitext text/x-wiki <includeonly>{{#invoke:Infobox|main |kind=ItemInfo Infobox |sep=, |image={{#if:{{{image|}}}|[[File:{{{image}}}{{!}}100px]]}} |sections=General Info, Behavior, Stats, External Links |General Info=Author(s), Game, Mod, Usage Rights |Behavior=Item Type, Effect(s) |Stats=Radius, Height, Amount Given, Effect Duration |External Links=ModDB, Realm667, Website, Forum Thread }}</includeonly><noinclude> {{documentation}} [[Category:Infobox templates]] </noinclude> 7c75929508e183c4f753855b3d9b1bf168d49ba6 Template:ItemInfo Infobox/doc 10 341 527 2025-11-09T20:04:12Z MasterOfDisillusionment 431405 Created page with "This is an example ItemInfo infobox using the DRUID infobox framework. = Copyable code for use on other content pages = If you want to create pages using this infobox, you can copy the code below. This code is for CONTENT PAGES ONLY. It does not have anything to do with changing what the template supports. A field can be left empty if the data for it is not needed. == Example Code == Attribute Scale Reference|If you haven't already, make sure you have read the page..." wikitext text/x-wiki This is an example ItemInfo infobox using the DRUID infobox framework. = Copyable code for use on other content pages = If you want to create pages using this infobox, you can copy the code below. This code is for CONTENT PAGES ONLY. It does not have anything to do with changing what the template supports. A field can be left empty if the data for it is not needed. == Example Code == [[Attribute Scale Reference|If you haven't already, make sure you have read the page on how to correctly list actor stats.]] <syntaxhighlight lang="wikitext" style="overflow: auto;"> {{ItemInfo Infobox |title= Weapon Name |image= ImageFileName.png |Author(s)= Name of author |Game= Name of the game if the item belongs to the base game |Mod= Name of the mod if the item belongs to a user made mod |Usage Rights= Specified is others are allowed to use this item in their own games or mods. |Item Type= The type of powerup e.g. Health, Armor, power-up, etc. |Effect(s)= Describes what the item does if it's a power-up. If it isn't, ignore this field. |Radius= The radius of the item as it is defined in the script code. |Width= The width of the item as it is defined in the script code. |Amount Given= How much of the item is given upon being obtained. |Effect Duration= How long the effect lasts in seconds if it's a power-up |ModDB= Link to the moddb page where this item or the mod it belongs to can be found. |Realm667= Ditto but for Realm667 |Website= Ditto but for the project website if there is one. |Forum Thread= Ditto but for the forum thread if there is one. }} </syntaxhighlight><noinclude>[[Category:Template documentation]]</noinclude> == Clean Version == <syntaxhighlight lang="wikitext" style="overflow: auto;"> {{ItemInfo Infobox |title= |image= |Author(s)= |Game= |Mod= |Usage Rights= |Item Type= |Effect(s)= |Radius= |Width= |Amount Given= |Effect Duration= |ModDB= |Realm667= |Website= |Forum Thread= }} </syntaxhighlight><noinclude>[[Category:Template documentation]]</noinclude> 115e872bef4a2f2a566ed20077c87eaae0e89f73 542 527 2025-11-09T20:36:53Z MasterOfDisillusionment 431405 wikitext text/x-wiki This is an example ItemInfo infobox using the DRUID infobox framework. = Copyable code for use on other content pages = If you want to create pages using this infobox, you can copy the code below. This code is for CONTENT PAGES ONLY. It does not have anything to do with changing what the template supports. A field can be left empty if the data for it is not needed. == Example Code == Before filling these out, make sure to read the pages on [[Attribute Scale Reference|Scale Reference]] and [[Usage Rights|Usage Rights]]. <syntaxhighlight lang="wikitext" style="overflow: auto;"> {{ItemInfo Infobox |title= Weapon Name |image= ImageFileName.png |Author(s)= Name of author |Game= Name of the game if the item belongs to the base game |Mod= Name of the mod if the item belongs to a user made mod |Usage Rights= Specified is others are allowed to use this item in their own games or mods. |Item Type= The type of powerup e.g. Health, Armor, power-up, etc. |Effect(s)= Describes what the item does if it's a power-up. If it isn't, ignore this field. |Radius= The radius of the item as it is defined in the script code. |Width= The width of the item as it is defined in the script code. |Amount Given= How much of the item is given upon being obtained. |Effect Duration= How long the effect lasts in seconds if it's a power-up |ModDB= Link to the moddb page where this item or the mod it belongs to can be found. |Realm667= Ditto but for Realm667 |Website= Ditto but for the project website if there is one. |Forum Thread= Ditto but for the forum thread if there is one. }} </syntaxhighlight><noinclude>[[Category:Template documentation]]</noinclude> == Clean Version == <syntaxhighlight lang="wikitext" style="overflow: auto;"> {{ItemInfo Infobox |title= |image= |Author(s)= |Game= |Mod= |Usage Rights= |Item Type= |Effect(s)= |Radius= |Width= |Amount Given= |Effect Duration= |ModDB= |Realm667= |Website= |Forum Thread= }} </syntaxhighlight><noinclude>[[Category:Template documentation]]</noinclude> 1af095698c5b873267e11e5df846d35733dba520 File:ItemStimpack.png 6 342 528 2025-11-09T20:05:34Z MasterOfDisillusionment 431405 Stimpack item from Doom. wikitext text/x-wiki == Summary == Stimpack item from Doom. == Licensing == {{License|fairuse}} fc531e0f7567f8f2c0f0705238974ecd08be95e8 Template:MonsterInfo Infobox 10 332 534 502 2025-11-09T20:16:57Z MasterOfDisillusionment 431405 wikitext text/x-wiki <includeonly>{{#invoke:Infobox|main |kind=MonsterInfo Infobox |sep=, |image={{#if:{{{image|}}}|[[File:{{{image}}}{{!}}150px]]}} |sections=General Info, Behavior, Stats, External Links |General Info=Author, First Appearance, Mod, Usage Rights |Behavior=Attacks, Special Abilities |Stats=Radius, Height, HP, Speed, Attack Speed, Pain chance, Drops |External Links=ModDB, Realm667, Website, Forum Thread }}</includeonly><noinclude> {{documentation}} [[Category:Infobox templates]] </noinclude> 2f7a64249895a749c448eb5532866b942eefbe0c 535 534 2025-11-09T20:18:24Z MasterOfDisillusionment 431405 wikitext text/x-wiki <includeonly>{{#invoke:Infobox|main |kind=MonsterInfo Infobox |sep=, |image={{#if:{{{image|}}}|[[File:{{{image}}}{{!}}150px]]}} |sections=General Info, Behavior, Stats, External Links |General Info=Author, Game, Mod, Usage Rights |Behavior=Attacks, Special Abilities |Stats=Radius, Height, HP, Speed, Attack Speed, Pain chance, Drops |External Links=ModDB, Realm667, Website, Forum Thread }}</includeonly><noinclude> {{documentation}} [[Category:Infobox templates]] </noinclude> a91b3d2e0c2672fe22d6531e76c7676764e6d86e Usage Rights 0 343 540 2025-11-09T20:28:31Z MasterOfDisillusionment 431405 Created page with "Different types of assets have varying usage rights depending on their origin and the permissions granted by the original author or creator. Before using an asset in your own game or mod, make sure you are familiar with the different types of rights. == Type of Right == * In-game only: The asset belongs to an official commercial release (e.g. Doom) and may only be used or modified within the context of game mods made specifically for that game. Category:Mods And Ass..." wikitext text/x-wiki Different types of assets have varying usage rights depending on their origin and the permissions granted by the original author or creator. Before using an asset in your own game or mod, make sure you are familiar with the different types of rights. == Type of Right == * In-game only: The asset belongs to an official commercial release (e.g. Doom) and may only be used or modified within the context of game mods made specifically for that game. [[Category:Mods And Assets]] 6d8a0ebd52c6df759999119affd4fa02bd3b661c 541 540 2025-11-09T20:33:27Z MasterOfDisillusionment 431405 wikitext text/x-wiki Different types of assets have varying usage rights depending on their origin and the permissions granted by the original author or creator. Before using an asset in your own game or mod, make sure you are familiar with the different types of rights. == Types == * In-game only: The asset belongs to an official commercial release (e.g. Doom) and may only be used or modified within the context of game mods made specifically for that game. * Credit required: The asset may be reused in other projects as long as proper credit is given to the original creator or team. * Free use: The asset may be reused, modified, or redistributed without restriction or need for attribution. * Unknown: The asset’s usage rights have not been clearly stated by the author, or its origin is uncertain. [[Category:Mods And Assets]] ca122782017f716f7005fdd71251c4db082af64d 545 541 2025-11-09T20:45:24Z MasterOfDisillusionment 431405 wikitext text/x-wiki Different types of assets have varying usage rights depending on their origin and the permissions granted by the original author or creator. Before using an asset in your own game or mod, make sure you are familiar with the different types of rights. == Types == * In-game only: The asset belongs to an official commercial release (e.g. Doom) and may only be used or modified within the context of game mods made specifically for that game. * Mod-locked: The asset originates from a user-created mod and may not be reused outside of that specific mod without the creator’s permission. * Credit required: The asset may be reused in other projects as long as proper credit is given to the original creator or team. * Free use: The asset may be reused, modified, or redistributed without restriction or need for attribution. * Unknown: The asset’s usage rights have not been clearly stated by the author, or its origin is uncertain. [[Category:Mods And Assets]] d399018f4ce311dfff317e3826ed632062ec663b Boom Tropes 0 318 546 426 2025-11-09T20:52:43Z MasterOfDisillusionment 431405 wikitext text/x-wiki Boom Tropes is an archive of recurring design elements, level setups, and architecture patterns found in classic FPS games and their mods. Besides being fun to browse, the tropes can also be a potentially useful source of inspiration for level designers since these tropes can be easily incorporated into their own designs. == Encounter Design == Tropes related monster placement and encounters. === Incidental === Straightforward monster placement that doesn't require elaborate setups. * [[Idle Monster]]: A monster that remains inactive until it sees the player. * [[Door Ambush]]: A monster that waits behind a door. * [[Lift Ambush]]: A monster that waits on top of a platform or lift. * [[Turret Monster]]: A projectile or hitscan monster that’s nested onto an elevated space or platform. * [[Alerted Monster]]: Like an idle monster except it’s not deaf; it can be awoken by player’s gunfire without a direct line of sight. === Monster Closets & Traps === More complex encounters involving triggers or scripts. * [[Dropwall Trap]]: A wall or section of a wall that lowers vertically to reveal a new area with an enemy or multiple enemies. * Item 2 == Layouts & Geometry == Tropes related to map layouts and area design. === Map Layouts === How maps are organized as a whole. * Item 1 * Item 2 === Room Modules === The types of areas commonly used in maps. * [[Hub]]: An area with three or more entry points. * [[Dead-end]]: An area with a single entry point. * [[Corridor]]: An area with two entry points. * [[Couplers]]: Small connector spaces used to bridge areas == Item Placement == Tropes relating to item placement. * Item 1 * Item 2 == Interactives == Gameplay tropes involving interactive elements, like doors, switches, teleporters, etc. * Item 1 * Item 2 == Settings & Locations == Common settings and locations of levels. * Item 1 * Item 2 == Detailing == Tropes related to the process of adding visual elements that enhance realism and atmosphere without altering the gameplay structure go here. === Geometric === Map/Level Detail created through level geometry. * Item 1 * Item 2 === Props & Greeble === Map/Level Detail created through placeable props and actors. * [[Crates And Barrels]]: Storage containers, usually made from wood or alloy. * Item 2 [[Category:Boom Tropes]] eb851e8722f93360da4143432ccc76f119ec5943 547 546 2025-11-09T21:14:17Z MasterOfDisillusionment 431405 wikitext text/x-wiki Boom Tropes is an archive of recurring design elements, level setups, and architecture patterns found in classic FPS games and their mods. Besides being fun to browse, the tropes can also be a potentially useful source of inspiration for level designers since these tropes can be easily incorporated into their own designs. == Encounter Design == Any tropes related to monster placement and combat setups go here. * [[Idle Monster]]: A monster that remains inactive until it sees the player. * [[Door Ambush]]: A monster that waits behind a door. * [[Lift Ambush]]: A monster that waits on top of a platform or lift. * [[Turret Monster]]: A projectile or hitscan monster that’s nested onto an elevated space or platform. * [[Alerted Monster]]: Like an idle monster except it’s not deaf; it can be awoken by player’s gunfire without a direct line of sight. * [[Dropwall Trap]]: A wall or section of a wall that lowers vertically to reveal a new area with an enemy or multiple enemies. == Map Design == Tropes related to map design and layouts are listed here. ''Note: This section is not for detailing techniques, which have their own section below.'' * Item 1 * Item 2 == Room Modules == Tropes related to commonly used room types and modules are listed here. * [[Hub]]: An area with three or more entry points. * [[Dead-end]]: An area with a single entry point. * [[Corridor]]: An area with two entry points. * [[Coupler]]: Small connector spaces used to bridge areas == Item Tropes == Tropes related to items, power-ups, and their use in mods and maps are listed here. * Item 1 * Item 2 == Interactives == Tropes involving interactive elements, like doors, switches, teleporters, etc, are listed here. * Decorative Door: A purely decorative door that cannot be opened. * Keycard Door * Item 2 == Themes & Locations == Common settings and locations of levels. Note that 'theme' is considered distinct from 'location'; a military outpost can belong to the Military Theme, but not every map with a military theme necessarily takes place on an outpost. For more information on themes, [[Level Theme|see this page]]. === Themes === * [[Military Theme]] * [[Industrial Theme]] * [[Urban Theme]] * [[Lab Theme]] === Locations - Military === * [[Army Base]] * [[Warzone]] == Detailing == Tropes related to the process of adding visual elements that enhance realism and atmosphere without altering the gameplay structure go here. * [[Decorative Door]]: A purely decorative door that cannot be opened. * [[Crates And Barrels]]: Storage containers, usually made from wood or alloy. [[Category:Boom Tropes]] ccc80ed235735bc60e9180f4665600030aa59bba 548 547 2025-11-09T21:24:01Z MasterOfDisillusionment 431405 wikitext text/x-wiki Boom Tropes is an archive of recurring design elements, level setups, and architecture patterns found in classic FPS games and their mods. Besides being fun to browse, the tropes can also be a potentially useful source of inspiration for level designers since these tropes can be easily incorporated into their own designs. == Encounter Design == Any tropes related to monster placement and combat setups go here. * [[Idle Monster]]: A monster that remains inactive until it sees the player. * [[Door Ambush]]: A monster that waits behind a door. * [[Lift Ambush]]: A monster that waits on top of a platform or lift. * [[Turret Monster]]: A projectile or hitscan monster that’s nested onto an elevated space or platform. * [[Alerted Monster]]: Like an idle monster except it’s not deaf; it can be awoken by player’s gunfire without a direct line of sight. * [[Dropwall Trap]]: A wall or section of a wall that lowers vertically to reveal a new area with an enemy or multiple enemies. == Map Design & Layouts == Tropes related to map design and layouts are listed here. ''Note: This section is not for detailing techniques, which have their own section below.'' * [[Linear Layout]] * [[hub-and-spoke Layout]] * [[Hub Room]]: An area with three or more entry points. * [[Dead-end Room]]: A area or room with a single entry point. * [[Corridor]]: An area or room with two entry points. * [[Coupler]]: A small connector spaces used to bridge areas == Item Tropes == Tropes related to items, power-ups, and their use in mods and maps are listed here. * Item 1 * Item 2 == Interactives == Tropes involving interactive elements, like doors, switches, teleporters, etc, are listed here. * Decorative Door: A purely decorative door that cannot be opened. * Keycard Door * Item 2 == Themes & Locations == Common settings and locations of levels. Note that 'theme' is considered distinct from 'location'; a military outpost can belong to the Military Theme, but not every map with a military theme necessarily takes place on an outpost. === Themes === * [[Military Theme]] * [[Industrial Theme]] * [[Urban Theme]] * [[Technology Theme]] === Locations - Military === * [[Army Base]] * [[Warzone]] === Locations - Industrial === * [[Warehouse]] * [[Train]] === Locations - Urban === * [[Downtown]] * [[Suburb]] === Locations - Lab === * [[Research Facility]] * [[Lab Complex]] == Detailing == Tropes related to the process of adding visual elements that enhance realism and atmosphere without altering the gameplay structure go here. * [[Decorative Door]]: A purely decorative door that cannot be opened. * [[Crates And Barrels]]: Storage containers, usually made from wood or alloy. [[Category:Boom Tropes]] 6842c68232c9126691918313185515a3ae4a1f65 549 548 2025-11-09T21:28:11Z MasterOfDisillusionment 431405 wikitext text/x-wiki Boom Tropes is an archive of recurring design elements, level setups, and architecture patterns found in classic FPS games and their mods. Besides being fun to browse, the tropes can also be a potentially useful source of inspiration for level designers since these tropes can be easily incorporated into their own designs. == Encounter Design == Any tropes related to monster placement and combat setups go here. * [[Idle Monster]]: A monster that remains inactive until it sees the player. * [[Door Ambush]]: A monster that waits behind a door. * [[Lift Ambush]]: A monster that waits on top of a platform or lift. * [[Turret Monster]]: A projectile or hitscan monster that’s nested onto an elevated space or platform. * [[Alerted Monster]]: Like an idle monster except it’s not deaf; it can be awoken by player’s gunfire without a direct line of sight. * [[Dropwall Trap]]: A wall or section of a wall that lowers vertically to reveal a new area with an enemy or multiple enemies. == Map Design & Layouts == Tropes related to map design and layouts are listed here. ''Note: This section is not for detailing techniques, which have their own section below.'' * [[Linear Layout]] * [[hub-and-spoke Layout]] * [[Hub Room]]: An area with three or more entry points. * [[Dead-end Room]]: A area or room with a single entry point. * [[Corridor]]: An area or room with two entry points. * [[Coupler]]: A small connector spaces used to bridge areas == Item Tropes == Tropes related to items, power-ups, and their use in mods and maps are listed here. * [[Caged Powerup]] == Doors, Lifts, and Teleporters == Tropes involving interactive elements, like doors, switches, teleporters, etc, are listed here. * [[Teleporter]] * [[Door]] * [[Locked Door]] * [[Switch Door]] * [[Timed Door]] * [[Shootable Door]] == Themes & Locations == Common settings and locations of levels. Note that 'theme' is considered distinct from 'location'; a military outpost can belong to the Military Theme, but not every map with a military theme necessarily takes place on an outpost. === Themes === * [[Military Theme]] * [[Industrial Theme]] * [[Urban Theme]] * [[Technology Theme]] === Locations - Military === * [[Army Base]] * [[Warzone]] === Locations - Industrial === * [[Warehouse]] * [[Train]] === Locations - Urban === * [[Downtown]] * [[Suburb]] === Locations - Lab === * [[Research Facility]] * [[Lab Complex]] == Detailing == Tropes related to the process of adding visual elements that enhance realism and atmosphere without altering the gameplay structure go here. * [[Decorative Door]]: A purely decorative door that cannot be opened. * [[Crates And Barrels]]: Storage containers, usually made from wood or alloy. [[Category:Boom Tropes]] c505638c7f6f572b79851e6cc51e44cfd9aa83ce 550 549 2025-11-09T21:36:50Z MasterOfDisillusionment 431405 wikitext text/x-wiki Boom Tropes is an archive of recurring design elements, level setups, and architecture patterns found in classic FPS games and their mods. Besides being fun to browse, the tropes can also be a potentially useful source of inspiration for level designers since these tropes can be easily incorporated into their own designs. == Encounter Design == Any tropes related to monster placement and combat setups go here. * [[Idle Monster]]: A monster that remains inactive until it sees the player. * [[Door Ambush]]: A monster that waits behind a door. * [[Lift Ambush]]: A monster that waits on top of a platform or lift. * [[Turret Monster]]: A projectile or hitscan monster that’s nested onto an elevated space or platform. * [[Alerted Monster]]: Like an idle monster except it’s not deaf; it can be awoken by player’s gunfire without a direct line of sight. * [[Dropwall Trap]]: A wall or section of a wall that lowers vertically to reveal a new area with an enemy or multiple enemies. == Map Design & Layouts == Tropes related to map design and layouts are listed here. ''Note: This section is not for detailing techniques, which have their own section below.'' * [[Linear Layout]] * [[hub-and-spoke Layout]] * [[Hub Room]]: An area with three or more entry points. * [[Dead-end Room]]: A area or room with a single entry point. * [[Corridor]]: An area or room with two entry points. * [[Coupler]]: A small connector spaces used to bridge areas == Item Tropes == Tropes related to items, power-ups, and their use in mods and maps are listed here. * [[Caged Powerup]] == Doors, Lifts, and Teleporters == Tropes involving interactive elements, like doors, switches, teleporters, etc, are listed here. * [[Teleporter]] * [[Door]] * [[Locked Door]] * [[Switch Door]] * [[Timed Door]] * [[Shootable Door]] == Themes & Locations == Common settings and locations of levels. Note that 'theme' is considered distinct from 'location'; a military outpost can belong to the Military Theme, but not every map with a military theme necessarily takes place on an outpost. === Themes === * [[Military Theme]] * [[Industrial Theme]] * [[Urban Theme]] * [[Technology Theme]] === Locations - Military === * [[Army Base]] * [[Warzone]] === Locations - Industrial === * [[Warehouse]] * [[Train]] === Locations - Urban === * [[Downtown]] * [[Suburb]] === Locations - Lab === * [[Research Facility]] * [[Lab Complex]] == Detailing == Tropes related to the process of adding visual elements that enhance realism and atmosphere are listed here. Note that detail created through level geometry is considered separate from detail created through props (e.g. 'greeble'). === Geometric Detail === * [[Decorative Door]]: A purely decorative door that cannot be opened. * [[Indented section]]: A section of wall or surface is pushed inward to create depth and visual interest. * [[Protruding section]]: A section of wall or surface is pushed outward to create depth and visual interest. === Prop/Greeble Detail === * [[Crates And Barrels]]: Storage containers, usually made from wood or alloy. [[Category:Boom Tropes]] 5afbfdeba292462a3a686bae8436f2585e645e83 551 550 2025-11-09T21:41:56Z MasterOfDisillusionment 431405 wikitext text/x-wiki Boom Tropes is an archive of recurring design elements, level setups, and architecture patterns found in classic FPS games and their mods. Besides being fun to browse, the tropes can also be a potentially useful source of inspiration for level designers since these tropes can be easily incorporated into their own designs. == Encounter Design == Any tropes related to monster placement and combat setups go here. * [[Idle Monster]]: A monster that remains inactive until it sees the player. * [[Door Ambush]]: A monster that waits behind a door. * [[Lift Ambush]]: A monster that waits on top of a platform or lift. * [[Turret Monster]]: A projectile or hitscan monster that’s nested onto an elevated space or platform. * [[Alerted Monster]]: Like an idle monster except it’s not deaf; it can be awoken by player’s gunfire without a direct line of sight. * [[Dropwall Trap]]: A wall or section of a wall that lowers vertically to reveal a new area with an enemy or multiple enemies. == Map Design & Layouts == Tropes related to map design and layouts are listed here. ''Note: This section is not for detailing techniques, which have their own section below.'' * [[Linear Layout]] * [[hub-and-spoke Layout]] * [[Hub Room]]: An area with three or more entry points. * [[Dead-end Room]]: A area or room with a single entry point. * [[Corridor]]: An area or room with two entry points. * [[Coupler]]: A small connector spaces used to bridge areas == Item Tropes == Tropes related to items, power-ups, and their use in mods and maps are listed here. * [[Pickup Trap]]: A pickup triggers a trap when collected. * [[Taunting Pickup]]: A pickup item, often a power-up or weapon, taunts the player with its presence but seems unreachable at first glance. == Doors, Lifts, and Teleporters == Tropes involving interactive elements, like doors, switches, teleporters, etc, are listed here. * [[Teleporter]] * [[Door]] * [[Locked Door]] * [[Switch Door]] * [[Timed Door]] * [[Shootable Door]] == Themes & Locations == Common settings and locations of levels. Note that 'theme' is considered distinct from 'location'; a military outpost can belong to the Military Theme, but not every map with a military theme necessarily takes place on an outpost. === Themes === * [[Military Theme]] * [[Industrial Theme]] * [[Urban Theme]] * [[Technology Theme]] === Locations - Military === * [[Army Base]] * [[Warzone]] === Locations - Industrial === * [[Warehouse]] * [[Train]] === Locations - Urban === * [[Downtown]] * [[Suburb]] === Locations - Lab === * [[Research Facility]] * [[Lab Complex]] == Detailing == Tropes related to the process of adding visual elements that enhance realism and atmosphere are listed here. Note that detail created through level geometry is considered separate from detail created through props (e.g. 'greeble'). === Geometric Detail === * [[Decorative Door]]: A purely decorative door that cannot be opened. * [[Indented section]]: A section of wall or surface is pushed inward to create depth and visual interest. * [[Protruding section]]: A section of wall or surface is pushed outward to create depth and visual interest. === Prop/Greeble Detail === * [[Crates And Barrels]]: Storage containers, usually made from wood or alloy. [[Category:Boom Tropes]] 11536595347936442d21d032807effc259fcc6bc 552 551 2025-11-09T22:17:29Z MasterOfDisillusionment 431405 wikitext text/x-wiki Boom Tropes is an archive of recurring design elements, level setups, and architecture patterns found in classic FPS games and their mods. Besides being fun to browse, the tropes can also be a potentially useful source of inspiration for level designers since these tropes can be easily incorporated into their own designs. == Encounter Design == Any tropes related to monster placement and combat setups go here. * [[Idle Monster]]: A monster that remains inactive until it sees the player. * [[Door Ambush]]: A monster that waits behind a door. * [[Lift Ambush]]: A monster that waits on top of a platform or lift. * [[Turret Monster]]: A projectile or hitscan monster that’s nested onto an elevated space or platform. * [[Alerted Monster]]: Like an idle monster except it’s not deaf; it can be awoken by player’s gunfire without a direct line of sight. * [[Dropwall Trap]]: A wall or section of a wall that lowers vertically to reveal a new area with an enemy or multiple enemies. == Room Layouts == Tropes related to map design and layouts are listed here. ''Note: This section is not for detailing techniques, which have their own section below.'' * [[Hub Room]]: An area with three or more entry points. * [[Dead-end Room]]: A area or room with a single entry point. * [[Corridor Room]]: An area or room with two entry points. * [[Coupler Room]]: A small connector spaces used to bridge areas * [[Maze Room]]: An area consisting of a maze the player must navigate through. == Item Tropes == Tropes related to items, power-ups, and their use in mods and maps are listed here. * [[Pickup Trap]]: A pickup triggers a trap when collected. * [[Taunting Pickup]]: A pickup item, often a power-up or weapon, taunts the player with its presence but seems unreachable at first glance. == Doors, Lifts, and Teleporters == Tropes involving interactive elements, like doors, switches, teleporters, etc, are listed here. * [[Teleporter]]: A linedef that teleports the player or monster someplace else when crossed. * [[Door]]: An interactive door that the player and or monsters can open. * [[Switch Door]]: A door that can only be opened with a switch. * [[Timed Door]]: A door that stays open for a predetermined period before closing and requiring reactivation. * [[Shootable Door]]: A door that only opens when dealt damage by the player's weapons or a stray projectile/attack. == Themes & Locations == Common settings and locations of levels. Note that 'theme' is considered distinct from 'location'; a military outpost can belong to the Military Theme, but not every map with a military theme necessarily takes place on an outpost. === Themes === * [[Military Theme]]: Military locations like army bases. * [[Industrial Theme]]: Industrial environments like warehouses and factories. * [[Urban Theme]]: City and urban environments. * [[Technology Theme]]: High-tech and science fiction esque settings like research labs and spaceships. * [[Hell Theme]]: Locations set in hell or hellish environments. === Locations - Military === * [[Army Base Level]]: Military bases and outposts/garrisons. * [[Warzone Level]]: Levels taking place in war-torn locations and battlefields. === Locations - Industrial === * [[Warehouse Level]]: Warehouse complex and storage facilities. * [[Train Level]]: A (usually) liner train level. === Locations - Urban === * [[Downtown Level]]: City downtown area. * [[Suburb Level]]: City suburb area. === Locations - Technology === * [[Spaceship Level]]: A level taking place on a spaceship. * [[Lab Level]] === Locations - Hell === * [[Hell Gate Level]]: A level representing the literal gates of hell. * [[River Styx Level]]: The river Styx from Greek mythology. == Detailing == Tropes related to the process of adding visual elements that enhance realism and atmosphere are listed here. Note that detail created through level geometry is considered separate from detail created through props (e.g. 'greeble'). === Geometric Detail === * [[Decorative Door]]: A purely decorative door that cannot be opened. * [[Indented section]]: A section of wall or surface is pushed inward to create depth and visual interest. * [[Protruding section]]: A section of wall or surface is pushed outward to create depth and visual interest. === Prop/Greeble Detail === * [[Crates And Barrels]]: Storage containers, usually made from wood or alloy. [[Category:Boom Tropes]] 0d3b9e125aaef042b54f4d06f25cd4875758a5ee Boom Tropes 0 318 553 552 2025-11-09T22:25:09Z MasterOfDisillusionment 431405 wikitext text/x-wiki Boom Tropes is an archive of recurring design elements, level setups, and architecture patterns found in classic FPS games and their mods. Besides being fun to browse, the tropes can also be a potentially useful source of inspiration for level designers since these tropes can be easily incorporated into their own designs. == Encounter Design == Any tropes related to monster placement and combat setups go here. * [[Idle Monster]]: A monster that remains inactive until it sees the player. * [[Door Ambush]]: A monster that waits behind a door. * [[Lift Ambush]]: A monster that waits on top of a platform or lift. * [[Turret Monster]]: A projectile or hitscan monster that’s nested onto an elevated space or platform. * [[Alerted Monster]]: Like an idle monster except it’s not deaf; it can be awoken by player’s gunfire without a direct line of sight. * [[Dropwall Trap]]: A wall or section of a wall that lowers vertically to reveal a new area with an enemy or multiple enemies. == Area Layouts == Tropes related to map design and layouts are listed here. ''Note: This section is not for detailing techniques, which have their own section below.'' * [[Hub Area]]: An area with three or more entry points. * [[Dead-end Area]]: A area with a single entry point. * [[Corridor Area]]: An area with two entry points. * [[Coupler Area]]: An area used to bridge two adjacent areas. * [[Maze Area]]: An area consisting of a maze the player must navigate through. * [[Perimeter Area]]: An area that borders and or envelopes another area or areas, often used to represent exterior locations. == Item Tropes == Tropes related to items, power-ups, and their use in mods and maps are listed here. * [[Pickup Trap]]: A pickup triggers a trap when collected. * [[Taunting Pickup]]: A pickup item, often a power-up or weapon, taunts the player with its presence but seems unreachable at first glance. == Doors, Lifts, and Teleporters == Tropes involving interactive elements, like doors, switches, teleporters, etc, are listed here. * [[Teleporter]]: A linedef that teleports the player or monster someplace else when crossed. * [[Door]]: An interactive door that the player and or monsters can open. * [[Switch Door]]: A door that can only be opened with a switch. * [[Timed Door]]: A door that stays open for a predetermined period before closing and requiring reactivation. * [[Shootable Door]]: A door that only opens when dealt damage by the player's weapons or a stray projectile/attack. == Themes & Locations == Common settings and locations of levels. Note that 'theme' is considered distinct from 'location'; a military outpost can belong to the Military Theme, but not every map with a military theme necessarily takes place on an outpost. === Themes === * [[Military Theme]]: Military locations like army bases. * [[Industrial Theme]]: Industrial environments like warehouses and factories. * [[Urban Theme]]: City and urban environments. * [[Technology Theme]]: High-tech and science fiction esque settings like research labs and spaceships. * [[Hell Theme]]: Locations set in hell or hellish environments. === Locations - Military === * [[Army Base Level]]: Military bases and outposts/garrisons. * [[Warzone Level]]: Levels taking place in war-torn locations and battlefields. === Locations - Industrial === * [[Warehouse Level]]: Warehouse complex and storage facilities. * [[Train Level]]: A (usually) liner train level. === Locations - Urban === * [[Downtown Level]]: City downtown area. * [[Suburb Level]]: City suburb area. === Locations - Technology === * [[Spaceship Level]]: A level taking place on a spaceship. * [[Lab Level]] === Locations - Hell === * [[Hell Gate Level]]: A level representing the literal gates of hell. * [[River Styx Level]]: The river Styx from Greek mythology. == Detailing == Tropes related to the process of adding visual elements that enhance realism and atmosphere are listed here. Note that detail created through level geometry is considered separate from detail created through props (e.g. 'greeble'). === Geometric Detail === * [[Decorative Door]]: A purely decorative door that cannot be opened. * [[Indented section]]: A section of wall or surface is pushed inward to create depth and visual interest. * [[Protruding section]]: A section of wall or surface is pushed outward to create depth and visual interest. === Prop/Greeble Detail === * [[Crates And Barrels]]: Storage containers, usually made from wood or alloy. [[Category:Boom Tropes]] 573e1f904c46d26e364aba449eb3c7f933997b54 558 553 2025-11-09T22:41:49Z MasterOfDisillusionment 431405 wikitext text/x-wiki Boom Tropes is an archive of recurring design elements, level setups, and architecture patterns found in classic FPS games and their mods. Besides being fun to browse, the tropes can also be a potentially useful source of inspiration for level designers since these tropes can be easily incorporated into their own designs. == Encounter Design == Any tropes related to monster placement and combat setups go here. * [[Idle Monster]]: A monster that remains inactive until it sees the player. * [[Door Ambush]]: A monster that waits behind a door. * [[Lift Ambush]]: A monster that waits on top of a platform or lift. * [[Turret Monster]]: A projectile or hitscan monster that’s nested onto an elevated space or platform. * [[Alerted Monster]]: Like an idle monster except it’s not deaf; it can be awoken by player’s gunfire without a direct line of sight. * [[Dropwall Trap]]: A wall or section of a wall that lowers vertically to reveal a new area with an enemy or multiple enemies. == Area Layouts == Tropes related to map design and layouts are listed here. ''Note: This section is not for detailing techniques, which have their own section below.'' * [[Hub Area]]: An area with three or more entry points. * [[Dead-end Area]]: A area with a single entry point. * [[Corridor Area]]: An area with two entry points. * [[Coupler Area]]: An area used to bridge two adjacent areas. * [[Maze Area]]: An area consisting of a maze the player must navigate through. * [[Perimeter Area]]: An area that borders and or envelopes another area or areas, often used to represent exterior locations. == Item Tropes == Tropes related to items, power-ups, and their use in mods and maps are listed here. * [[Pickup Trap]]: A pickup triggers a trap when collected. * [[Taunting Pickup]]: A pickup item, often a power-up or weapon, taunts the player with its presence but seems unreachable at first glance. == Doors, Lifts, and Teleporters == Tropes involving interactive elements, like doors, switches, teleporters, etc, are listed here. * [[Teleporter]]: A linedef that teleports the player or monster someplace else when crossed. * [[Door]]: An interactive door that the player and or monsters can open. * [[Switch Door]]: A door that can only be opened with a switch. * [[Timed Door]]: A door that stays open for a predetermined period before closing and requiring reactivation. * [[Shootable Door]]: A door that only opens when dealt damage by the player's weapons or a stray projectile/attack. == Themes & Locations == Common settings and locations of levels. Note that 'theme' is considered distinct from 'location'; a military outpost can belong to the Military Theme, but not every map with a military theme necessarily takes place on an outpost. === Themes === * [[Military Theme]]: Military locations like army bases. * [[Industrial Theme]]: Industrial environments like warehouses and factories. * [[Urban Theme]]: City and urban environments. * [[Technology Theme]]: High-tech and science fiction esque settings like research labs and spaceships. * [[Hell Theme]]: Locations set in hell or hellish environments. === Locations - Military === * [[Army Base Level]]: Military bases and outposts/garrisons. * [[Warzone Level]]: Levels taking place in war-torn locations and battlefields. === Locations - Industrial === * [[Warehouse Level]]: Warehouse complex and storage facilities. * [[Train Level]]: A (usually) liner train level. === Locations - Urban === * [[Downtown Level]]: City downtown area. * [[Suburb Level]]: City suburb area. === Locations - Technology === * [[Spaceship Level]]: A level taking place on a spaceship. * [[Lab Level]] === Locations - Hell === * [[Hell Gate Level]]: A level representing the literal gates of hell. * [[River Styx Level]]: The river Styx from Greek mythology. == Detailing == Tropes related to the process of adding visual elements that enhance realism and atmosphere are listed here. * [[Decorative Door Detail]]: A purely decorative door that cannot be opened. * [[Indented section Detail]]: A section of wall or surface is pushed inward to create depth and visual interest. * [[Protruding section Detail]]: A section of wall or surface is pushed outward to create depth and visual interest. * [[Greeble Detail]]: Small-scale decorative geometry, texture work, and props used to make environments look more intricate and believable. * [[Crates And Barrels]]: Storage containers, usually made from wood or alloy. [[Category:Boom Tropes]] 6b2fe5b88b4f937ed61a0ee3252f04585885b4a0 559 558 2025-11-09T22:42:01Z MasterOfDisillusionment 431405 wikitext text/x-wiki Boom Tropes is an archive of recurring design elements, level setups, and architecture patterns found in classic FPS games and their mods. Besides being fun to browse, the tropes can also be a potentially useful source of inspiration for level designers since these tropes can be easily incorporated into their own designs. == Encounter Design == Any tropes related to monster placement and combat setups go here. * [[Idle Monster]]: A monster that remains inactive until it sees the player. * [[Door Ambush]]: A monster that waits behind a door. * [[Lift Ambush]]: A monster that waits on top of a platform or lift. * [[Turret Monster]]: A projectile or hitscan monster that’s nested onto an elevated space or platform. * [[Alerted Monster]]: Like an idle monster except it’s not deaf; it can be awoken by player’s gunfire without a direct line of sight. * [[Dropwall Trap]]: A wall or section of a wall that lowers vertically to reveal a new area with an enemy or multiple enemies. == Area Layouts == Tropes related to map design and layouts are listed here. ''Note: This section is not for detailing techniques, which have their own section below.'' * [[Hub Area]]: An area with three or more entry points. * [[Dead-end Area]]: A area with a single entry point. * [[Corridor Area]]: An area with two entry points. * [[Coupler Area]]: An area used to bridge two adjacent areas. * [[Maze Area]]: An area consisting of a maze the player must navigate through. * [[Perimeter Area]]: An area that borders and or envelopes another area or areas, often used to represent exterior locations. == Item Tropes == Tropes related to items, power-ups, and their use in mods and maps are listed here. * [[Pickup Trap]]: A pickup triggers a trap when collected. * [[Taunting Pickup]]: A pickup item, often a power-up or weapon, taunts the player with its presence but seems unreachable at first glance. == Doors, Lifts, and Teleporters == Tropes involving interactive elements, like doors, switches, teleporters, etc, are listed here. * [[Teleporter]]: A linedef that teleports the player or monster someplace else when crossed. * [[Door]]: An interactive door that the player and or monsters can open. * [[Switch Door]]: A door that can only be opened with a switch. * [[Timed Door]]: A door that stays open for a predetermined period before closing and requiring reactivation. * [[Shootable Door]]: A door that only opens when dealt damage by the player's weapons or a stray projectile/attack. == Themes & Locations == Common settings and locations of levels. Note that 'theme' is considered distinct from 'location'; a military outpost can belong to the Military Theme, but not every map with a military theme necessarily takes place on an outpost. === Themes === * [[Military Theme]]: Military locations like army bases. * [[Industrial Theme]]: Industrial environments like warehouses and factories. * [[Urban Theme]]: City and urban environments. * [[Technology Theme]]: High-tech and science fiction esque settings like research labs and spaceships. * [[Hell Theme]]: Locations set in hell or hellish environments. === Locations - Military === * [[Army Base Level]]: Military bases and outposts/garrisons. * [[Warzone Level]]: Levels taking place in war-torn locations and battlefields. === Locations - Industrial === * [[Warehouse Level]]: Warehouse complex and storage facilities. * [[Train Level]]: A (usually) liner train level. === Locations - Urban === * [[Downtown Level]]: City downtown area. * [[Suburb Level]]: City suburb area. === Locations - Technology === * [[Spaceship Level]]: A level taking place on a spaceship. * [[Lab Level]] === Locations - Hell === * [[Hell Gate Level]]: A level representing the literal gates of hell. * [[River Styx Level]]: The river Styx from Greek mythology. == Detailing == Tropes related to the process of adding visual elements that enhance realism and atmosphere are listed here. * [[Decorative Door Detail]]: A purely decorative door that cannot be opened. * [[Indented section Detail]]: A section of wall or surface is pushed inward to create depth and visual interest. * [[Protruding section Detail]]: A section of wall or surface is pushed outward to create depth and visual interest. * [[Greeble Detail]]: Small-scale decorative geometry, texture work, and props used to make environments look more intricate and believable. * [[Crates And Barrels]]: Storage containers, usually made from wood or alloy. [[Category:Boom Tropes]] c3d18c2999e0e2ae4b625919ce5d2f072f249dd3 560 559 2025-11-09T22:42:52Z MasterOfDisillusionment 431405 wikitext text/x-wiki Boom Tropes is an archive of recurring design elements, level setups, and architecture patterns found in classic FPS games and their mods. Besides being fun to browse, the tropes can also be a potentially useful source of inspiration for level designers since these tropes can be easily incorporated into their own designs. == Encounter Design == Any tropes related to monster placement and combat setups go here. * [[Idle Monster]]: A monster that remains inactive until it sees the player. * [[Door Ambush]]: A monster that waits behind a door. * [[Lift Ambush]]: A monster that waits on top of a platform or lift. * [[Turret Monster]]: A projectile or hitscan monster that’s nested onto an elevated space or platform. * [[Alerted Monster]]: Like an idle monster except it’s not deaf; it can be awoken by player’s gunfire without a direct line of sight. * [[Dropwall Trap]]: A wall or section of a wall that lowers vertically to reveal a new area with an enemy or multiple enemies. == Area Layouts == Tropes related to map design and layouts are listed here. ''Note: This section is not for detailing techniques, which have their own section below.'' * [[Hub Area]]: An area with three or more entry points. * [[Dead-end Area]]: A area with a single entry point. * [[Corridor Area]]: An area with two entry points. * [[Coupler Area]]: An area used to bridge two adjacent areas. * [[Maze Area]]: An area consisting of a maze the player must navigate through. * [[Perimeter Area]]: An area that borders and or envelopes another area or areas, often used to represent exterior locations. == Item Tropes == Tropes related to items, power-ups, and their use in mods and maps are listed here. * [[Pickup Trap]]: A pickup triggers a trap when collected. * [[Taunting Pickup]]: A pickup item, often a power-up or weapon, taunts the player with its presence but seems unreachable at first glance. == Doors, Lifts, and Teleporters == Tropes involving interactive elements, like doors, switches, teleporters, etc, are listed here. * [[Teleporter]]: A linedef that teleports the player or monster someplace else when crossed. * [[Door]]: An interactive door that the player and or monsters can open. * [[Switch Door]]: A door that can only be opened with a switch. * [[Timed Door]]: A door that stays open for a predetermined period before closing and requiring reactivation. * [[Shootable Door]]: A door that only opens when dealt damage by the player's weapons or a stray projectile/attack. == Themes & Locations == Common settings and locations of levels. Note that 'theme' is considered distinct from 'location'; a military outpost can belong to the Military Theme, but not every map with a military theme necessarily takes place on an outpost. === Themes === * [[Military Theme]]: Military locations like army bases. * [[Industrial Theme]]: Industrial environments like warehouses and factories. * [[Urban Theme]]: City and urban environments. * [[Technology Theme]]: High-tech and science fiction esque settings like research labs and spaceships. * [[Hell Theme]]: Locations set in hell or hellish environments. === Locations - Military === * [[Army Base Level]]: Military bases and outposts/garrisons. * [[Warzone Level]]: Levels taking place in war-torn locations and battlefields. === Locations - Industrial === * [[Warehouse Level]]: Warehouse complex and storage facilities. * [[Train Level]]: A (usually) liner train level. === Locations - Urban === * [[Downtown Level]]: City downtown area. * [[Suburb Level]]: City suburb area. === Locations - Technology === * [[Spaceship Level]]: A level taking place on a spaceship. * [[Lab Level]] === Locations - Hell === * [[Hell Gate Level]]: A level representing the literal gates of hell. * [[River Styx Level]]: The river Styx from Greek mythology. == Detailing == Tropes related to the process of adding visual elements that enhance realism and atmosphere are listed here. * [[Decorative Door Detail]]: A purely decorative door that cannot be opened. * [[Indented section Detail]]: A section of wall or surface is pushed inward to create depth and visual interest. * [[Protruding section Detail]]: A section of wall or surface is pushed outward to create depth and visual interest. * [[Greeble Detail]]: Small-scale decorative geometry, texture work, and props used to make environments look more intricate and believable. * [[Crates And Barrels Detail]]: Storage containers, usually made from wood or alloy. [[Category:Boom Tropes]] 55e7c72c9a88d2eaad9867d1e35962488b81e96b Crates And Barrels Detail 0 310 554 400 2025-11-09T22:28:40Z MasterOfDisillusionment 431405 wikitext text/x-wiki Crates and barrels are storage containers, usually made from wood or metal alloys. The simplicity of these props makes them extremely common, as they provide an easy way to add greeble to a scene. However, they can also feel like lazy detailing if overused. They are more common in industrial settings. Although crates are considered a prop or greeble trope, it is possible to create them through level geometry, though sprites are often used for their simplicity. This depends on the game and the level designer's goals. == Types & Variants = * Static: Purely part of the scenery and cannot be damaged or interacted with. These are often made from geometry, though some games may use models or sprites. * Destructible: Has its own health pool and can be destroyed when it reaches zero. Depending on the game, there may be multiple states depicting various levels of damage, or it may simply be destroyed outright when its HP reaches zero. * Lootable: Can be opened or destroyed to reveal items or pickups. These are less common in classic games, though many user-made mods include them. * Explosive: High-explosive boxes and barrels that blow up when destroyed, dealing damage to nearby actors. These are often colored differently (e.g. red) to call attention to their hazardous nature, but this is not universal. == Image Examples == <gallery> TropeBarrels.png| Sprites for Wooden barrels - Source: Heretic's E1M1 TropeCrates.jpg| Crates created from level Geometry - Source: Ultimate Doom's E2M2 </gallery> [[Category:Boom Tropes]] 81ca5bc52d2158283cadd67b623f2eda74f97627 555 554 2025-11-09T22:29:06Z MasterOfDisillusionment 431405 wikitext text/x-wiki Crates and barrels are storage containers, usually made from wood or metal alloys. The simplicity of these props makes them extremely common, as they provide an easy way to add greeble to a scene. However, they can also feel like lazy detailing if overused. They are more common in industrial settings. Although crates are considered a prop or greeble trope, it is possible to create them through level geometry, though sprites are often used for their simplicity. This depends on the game and the level designer's goals. == Types & Variants = * '''Static:''' Purely part of the scenery and cannot be damaged or interacted with. These are often made from geometry, though some games may use models or sprites. * '''Destructible:''' Has its own health pool and can be destroyed when it reaches zero. Depending on the game, there may be multiple states depicting various levels of damage, or it may simply be destroyed outright when its HP reaches zero. * '''Lootable:''' Can be opened or destroyed to reveal items or pickups. These are less common in classic games, though many user-made mods include them. * '''Explosive:''' High-explosive boxes and barrels that blow up when destroyed, dealing damage to nearby actors. These are often colored differently (e.g. red) to call attention to their hazardous nature, but this is not universal. == Image Examples == <gallery> TropeBarrels.png| Sprites for Wooden barrels - Source: Heretic's E1M1 TropeCrates.jpg| Crates created from level Geometry - Source: Ultimate Doom's E2M2 </gallery> [[Category:Boom Tropes]] 10fceb9057e3512f4e2a650468a0cc2b3155220a 556 555 2025-11-09T22:29:30Z MasterOfDisillusionment 431405 wikitext text/x-wiki Crates and barrels are storage containers, usually made from wood or metal alloys. The simplicity of these props makes them extremely common, as they provide an easy way to add greeble to a scene. However, they can also feel like lazy detailing if overused. They are more common in industrial settings. Although crates are considered a prop or greeble trope, it is possible to create them through level geometry, though sprites are often used for their simplicity. This depends on the game and the level designer's goals. == Types & Variants = * '''Static:''' Purely part of the scenery and cannot be damaged or interacted with. These are often made from geometry, though some games may use models or sprites. * '''Destructible:''' Has its own health pool and can be destroyed when it reaches zero. Depending on the game, there may be multiple states depicting various levels of damage, or it may simply be destroyed outright when its HP reaches zero. * '''Lootable:''' Can be opened or destroyed to reveal items or pickups. These are less common in classic games, though many user-made mods include them. * '''Explosive:''' High-explosive boxes and barrels that blow up when destroyed, dealing damage to nearby actors. These are often colored differently (e.g. red) to call attention to their hazardous nature, but this is not universal. == Image Examples == <gallery> TropeBarrels.png| Sprites for Wooden barrels - Source: Heretic's E1M1 TropeCrates.jpg| Crates created from level Geometry - Source: Ultimate Doom's E2M2 </gallery> [[Category:Boom Tropes]] ff388f08ce243396638082f76fdf44fa997d52d1 557 556 2025-11-09T22:29:45Z MasterOfDisillusionment 431405 wikitext text/x-wiki Crates and barrels are storage containers, usually made from wood or metal alloys. The simplicity of these props makes them extremely common, as they provide an easy way to add greeble to a scene. However, they can also feel like lazy detailing if overused. They are more common in industrial settings. Although crates are considered a prop or greeble trope, it is possible to create them through level geometry, though sprites are often used for their simplicity. This depends on the game and the level designer's goals. == Types & Variants == * '''Static:''' Purely part of the scenery and cannot be damaged or interacted with. These are often made from geometry, though some games may use models or sprites. * '''Destructible:''' Has its own health pool and can be destroyed when it reaches zero. Depending on the game, there may be multiple states depicting various levels of damage, or it may simply be destroyed outright when its HP reaches zero. * '''Lootable:''' Can be opened or destroyed to reveal items or pickups. These are less common in classic games, though many user-made mods include them. * '''Explosive:''' High-explosive boxes and barrels that blow up when destroyed, dealing damage to nearby actors. These are often colored differently (e.g. red) to call attention to their hazardous nature, but this is not universal. == Image Examples == <gallery> TropeBarrels.png| Sprites for Wooden barrels - Source: Heretic's E1M1 TropeCrates.jpg| Crates created from level Geometry - Source: Ultimate Doom's E2M2 </gallery> [[Category:Boom Tropes]] 4dfffcde4875f935381fcd15125ee70d33392c1c 561 557 2025-11-09T22:50:03Z MasterOfDisillusionment 431405 MasterOfDisillusionment renamed page [[Crates And Barrels]] to [[Crates And Barrels Detail]]: Standardizing the title wikitext text/x-wiki Crates and barrels are storage containers, usually made from wood or metal alloys. The simplicity of these props makes them extremely common, as they provide an easy way to add greeble to a scene. However, they can also feel like lazy detailing if overused. They are more common in industrial settings. Although crates are considered a prop or greeble trope, it is possible to create them through level geometry, though sprites are often used for their simplicity. This depends on the game and the level designer's goals. == Types & Variants == * '''Static:''' Purely part of the scenery and cannot be damaged or interacted with. These are often made from geometry, though some games may use models or sprites. * '''Destructible:''' Has its own health pool and can be destroyed when it reaches zero. Depending on the game, there may be multiple states depicting various levels of damage, or it may simply be destroyed outright when its HP reaches zero. * '''Lootable:''' Can be opened or destroyed to reveal items or pickups. These are less common in classic games, though many user-made mods include them. * '''Explosive:''' High-explosive boxes and barrels that blow up when destroyed, dealing damage to nearby actors. These are often colored differently (e.g. red) to call attention to their hazardous nature, but this is not universal. == Image Examples == <gallery> TropeBarrels.png| Sprites for Wooden barrels - Source: Heretic's E1M1 TropeCrates.jpg| Crates created from level Geometry - Source: Ultimate Doom's E2M2 </gallery> [[Category:Boom Tropes]] 4dfffcde4875f935381fcd15125ee70d33392c1c Crates And Barrels 0 344 562 2025-11-09T22:50:03Z MasterOfDisillusionment 431405 MasterOfDisillusionment renamed page [[Crates And Barrels]] to [[Crates And Barrels Detail]]: Standardizing the title wikitext text/x-wiki #REDIRECT [[Crates And Barrels Detail]] e3f1d812254e77b891f9c627b26e45dafb824be9 Template:WeaponInfo Infobox 10 326 563 496 2025-11-09T23:12:35Z MasterOfDisillusionment 431405 wikitext text/x-wiki <includeonly>{{#invoke:Infobox|main |kind=WeaponInfo Infobox |sep=, |image={{#if:{{{image|}}}|[[File:{{{image}}}{{!}}150px]]}} |sections=General Info, Behavior, Stats, External Links |General Info=Author, Mod, Usage Rights |Behavior=Weapon Type, Ammo Type, Primary Fire, Secondary Fire, Requires Reloading |Stats=Radius, Height, Slot, Ammo Capacity, Damage, Rate of Fire, Accuracy, Range |External Links=ModDB, Realm667, Website, Forum Thread }}</includeonly><noinclude> {{documentation}} [[Category:Infobox templates]] </noinclude> 926b2064de63e8fe121aff57aed7441192a69db2 Game Information 0 315 564 417 2025-11-09T23:25:05Z MasterOfDisillusionment 431405 wikitext text/x-wiki Relevant Doom engine games are listed on this page along with other game information. == Games == === Classic === The original classics from the 90s. * [[Doom]]: Doom is a first person shooter action game created by Id Software and published in 1993. * [[Heretic]]: A fantasy version of Doom. === Classic === Neo-boomer shooters created using a modified version of the Doom engine (e.g. UZDoom/GZDoom). * [[Malefact]]: Malefact is a fantasy horror boomer shooter in development by GoreMaxxed Productions. The project is led by hardcore_gamer, with a demo version expected to release in Q1 2026. The game is built on the UZDoom engine. == Actors & Assets == To view information about specific actors in individual games or mods, visit the pages below. * [[Weapons]]: Weapons usable by the player. * [[Items]]: Pickups & Power-ups the player can collect. * [[Enemies]]: Enemies the player faces. [[Category:Game Information]] da5ab5efdd3c3939906a90f3b3c3b39c259399bb Malefact Mapping Tutorials 0 314 565 492 2025-11-11T00:09:50Z MasterOfDisillusionment 431405 wikitext text/x-wiki This level design guide was created to ease newcomers to Malefact mapping into the process. It was written by the game's lead developer and level designer. If you wish to create your own levels for the game, it’s strongly recommended you give them a glance, even if only for those sections covering functionality that is unique to Malefact. If you’d like to add your own tutorials or link to those created by others, you can do so on the [[Category:Tutorials And Guides|main tutorial category page]]. == Table of Contents == === Beginner === * [[Malefact Tutorial 1|Installing Prerequisites]] * Sector Creation * Texturing * Lighting * Sector Effects * Actor Placement * Linedef Triggers & Interactive Elements * Ending Your Map * MAPINFO Definition === Advanced === * Scrolling Surfaces * Slopes & Arches * 3D Sectors & Liquids * Patrolling Monsters & Hazards * ACS Scripting * Hub Maps * Ambient Sounds === Design Theory === * Pre-Planning * Area Modules * Monster Closets & Traps * Encounter Design & Pacing [[Category:Tutorials And Guides]] 9b0830df607ed93e3b15d225dd87452e48789c04 576 565 2025-11-11T14:43:45Z MasterOfDisillusionment 431405 wikitext text/x-wiki This level design guide was created to ease newcomers to Malefact mapping into the process. It was written by the game's lead developer and level designer. If you wish to create your own levels for the game, it’s strongly recommended you give them a glance, even if only for those sections covering functionality that is unique to Malefact. Note that these tutorials were written for Windows users and assume that you're using the Ultimate Doom Builder level editor. If you’d like to add your own tutorials or link to those created by others, you can do so on the [[Category:Tutorials And Guides|main tutorial category page]]. == Table of Contents == === Beginner === * [[Malefact Tutorial 1|Installing Prerequisites]] * Sector Creation * Texturing * Lighting * Sector Effects * Actor Placement * Linedef Triggers & Interactive Elements * Ending Your Map * MAPINFO Definition === Advanced === * Scrolling Surfaces * Slopes & Arches * 3D Sectors & Liquids * Patrolling Monsters & Hazards * ACS Scripting * Hub Maps * Ambient Sounds === Design Theory === * Pre-Planning * Area Modules * Monster Closets & Traps * Encounter Design & Pacing [[Category:Tutorials And Guides]] 545a41ac1e91621dac5eb8fee0ab17f25c430d90 590 576 2025-11-11T22:53:12Z MasterOfDisillusionment 431405 wikitext text/x-wiki This level design guide was created to ease newcomers to Malefact mapping into the process. It was written by the game's lead developer and level designer. If you wish to create your own levels for the game, it’s strongly recommended you give them a glance, even if only for those sections covering functionality that is unique to Malefact. Note that these tutorials were written for Windows users and assume that you're using the Ultimate Doom Builder level editor. Note: Although this series is written for Malefact, the techniques covered are equally applicable to Doom and Heretic mapping in most cases. If you’d like to add your own tutorials or link to those created by others, you can do so on the [[Category:Tutorials And Guides|main tutorial category page]]. == Table of Contents == === Beginner === * [[Malefact Tutorial 1|Installing Prerequisites]] * Sector Creation * Texturing * Lighting * Sector Effects * Actor Placement * Linedef Triggers & Interactive Elements * Ending Your Map * MAPINFO Definition === Advanced === * Scrolling Surfaces * Slopes & Arches * 3D Sectors & Liquids * Patrolling Monsters & Hazards * ACS Scripting * Hub Maps * Ambient Sounds === Design Theory === * Pre-Planning * Area Modules * Monster Closets & Traps * Encounter Design & Pacing [[Category:Tutorials And Guides]] e8364107f429abf7e029ed77aa4e6f83b2a1ca65 591 590 2025-11-11T22:54:11Z MasterOfDisillusionment 431405 wikitext text/x-wiki This level design guide was created to ease newcomers to Malefact mapping into the process. It was written by the game's lead developer and level designer. Although this series is written for Malefact, the techniques covered are equally applicable to Doom and Heretic mapping in most cases. If you wish to create your own levels for the game, it’s strongly recommended you give them a glance, even if only for those sections covering functionality that is unique to Malefact. Note that these tutorials were written for Windows users and assume that you're using the Ultimate Doom Builder level editor. If you’d like to add your own tutorials or link to those created by others, you can do so on the [[Category:Tutorials And Guides|main tutorial category page]]. == Table of Contents == === Beginner === * [[Malefact Tutorial 1|Installing Prerequisites]] * Sector Creation * Texturing * Lighting * Sector Effects * Actor Placement * Linedef Triggers & Interactive Elements * Ending Your Map * MAPINFO Definition === Advanced === * Scrolling Surfaces * Slopes & Arches * 3D Sectors & Liquids * Patrolling Monsters & Hazards * ACS Scripting * Hub Maps * Ambient Sounds === Design Theory === * Pre-Planning * Area Modules * Monster Closets & Traps * Encounter Design & Pacing [[Category:Tutorials And Guides]] 0a751b48709199bbe85a0c3b638b2a2137d40401 592 591 2025-11-12T01:01:44Z MasterOfDisillusionment 431405 wikitext text/x-wiki This level design guide was created to ease newcomers to Malefact mapping into the process. It was written by the game's lead developer and level designer. Although this series is written for Malefact, the techniques covered are equally applicable to Doom and Heretic mapping in most cases. If you wish to create your own levels for the game, it’s strongly recommended you give them a glance, even if only for those sections covering functionality that is unique to Malefact. Note that these tutorials were written for Windows users and assume that you're using the Ultimate Doom Builder level editor. If you’d like to add your own tutorials or link to those created by others, you can do so on the [[Category:Tutorials And Guides|main tutorial category page]]. == Table of Contents == === Beginner === * [[Malefact Tutorial 1|Installing Prerequisites]] * [[Sector Creation]] * Texturing * Lighting * Sector Effects * Actor Placement * Linedef Triggers & Interactive Elements * Ending Your Map * MAPINFO Definition === Advanced === * Scrolling Surfaces * Slopes & Arches * 3D Sectors & Liquids * Patrolling Monsters & Hazards * ACS Scripting * Hub Maps * Ambient Sounds === Design Theory === * Pre-Planning * Area Modules * Monster Closets & Traps * Encounter Design & Pacing [[Category:Tutorials And Guides]] 07cbab39aa01964e24fd7a9e95b432a42148ba6b 593 592 2025-11-12T01:09:54Z MasterOfDisillusionment 431405 wikitext text/x-wiki This level design guide was created to ease newcomers to Malefact mapping into the process. It was written by the game's lead developer and level designer. Although this series is written for Malefact, the techniques covered are equally applicable to Doom and Heretic mapping in most cases. If you wish to create your own levels for the game, it’s strongly recommended you give them a glance, even if only for those sections covering functionality that is unique to Malefact. Note that these tutorials were written for Windows users and assume that you're using the Ultimate Doom Builder level editor. If you’d like to add your own tutorials or link to those created by others, you can do so on the [[Category:Tutorials And Guides|main tutorial category page]]. == Table of Contents == === Beginner === * [[Malefact Tutorial 1|Installing Prerequisites]] * [[Sector Creation Tutorial]] * Texturing * Lighting * Sector Effects * Actor Placement * Linedef Triggers & Interactive Elements * Ending Your Map * MAPINFO Definition === Advanced === * Scrolling Surfaces * Slopes & Arches * 3D Sectors & Liquids * Patrolling Monsters & Hazards * ACS Scripting * Hub Maps * Ambient Sounds === Design Theory === * Pre-Planning * Area Modules * Monster Closets & Traps * Encounter Design & Pacing [[Category:Tutorials And Guides]] 224a03832c583bc3196ec1def4f68e702c56f637 595 593 2025-11-12T01:10:49Z MasterOfDisillusionment 431405 wikitext text/x-wiki This level design guide was created to ease newcomers to Malefact mapping into the process. It was written by the game's lead developer and level designer. Although this series is written for Malefact, the techniques covered are equally applicable to Doom and Heretic mapping in most cases. If you wish to create your own levels for the game, it’s strongly recommended you give them a glance, even if only for those sections covering functionality that is unique to Malefact. Note that these tutorials were written for Windows users and assume that you're using the Ultimate Doom Builder level editor. If you’d like to add your own tutorials or link to those created by others, you can do so on the [[Category:Tutorials And Guides|main tutorial category page]]. == Table of Contents == === Beginner === * [[Installing Prerequisites Tutorial|Installing Prerequisites]] * [[Sector Creation Tutorial|Sector Creation]] * Texturing * Lighting * Sector Effects * Actor Placement * Linedef Triggers & Interactive Elements * Ending Your Map * MAPINFO Definition === Advanced === * Scrolling Surfaces * Slopes & Arches * 3D Sectors & Liquids * Patrolling Monsters & Hazards * ACS Scripting * Hub Maps * Ambient Sounds === Design Theory === * Pre-Planning * Area Modules * Monster Closets & Traps * Encounter Design & Pacing [[Category:Tutorials And Guides]] dce51b46471e39597edde7ed4fa1c0f8868c35ba Installing Prerequisites Tutorial 0 345 566 2025-11-11T00:11:46Z MasterOfDisillusionment 431405 Created page with "So you want to create your own customized genocide, eh? You’ve come to the right place. I’m the lead developer and level designer for [Malefact|Malefact: Evil Unchained]], and I will be showing you how to do exactly that. == Installing the Prerequisites == === Installing Ultimate Doom Builder === The first step in your genocide journey is to install the [[https://ultimatedoombuilder.github.io/|Ultimate Doom Builder]] level editor. This is a fairly straightforward p..." wikitext text/x-wiki So you want to create your own customized genocide, eh? You’ve come to the right place. I’m the lead developer and level designer for [Malefact|Malefact: Evil Unchained]], and I will be showing you how to do exactly that. == Installing the Prerequisites == === Installing Ultimate Doom Builder === The first step in your genocide journey is to install the [[https://ultimatedoombuilder.github.io/|Ultimate Doom Builder]] level editor. This is a fairly straightforward process, and I assume you don’t need to be told how to install a desktop app. === Installing the Editor Configuration === UDM was originally created as a level-editing program for Doom and Heretic and comes preinstalled with configs for those games, but Malefact requires that its config be installed manually. You can download the required files [[FutureLinkToFiles|here]]. Inside the downloaded folder, you will find two files: * GZDoom_MalefactUDMF.cfg * Malefact_things.cfg You must then navigate to where you installed UDM. Usually, the install location will be something like C:\Users\MyUserName\AppData\Local\Programs\Ultimate Doom Builder If you cannot see the AppData folder, you may have to open File Explorer (e.g. the ‘View’ tab) and check the ‘Hidden items’ box to make it visible. Inside the Ultimate Doom Builder root folder, you’ll see another folder named ‘Configurations’. Open it. Once inside, place the GZDoom_MalefactUDMF.cfg file there. Inside this folder, you will also see another folder called ‘Includes’. Place the Malefact_things.cfg file inside that folder. <Image of where these files go> === Assigning Game Content === Now start Ultimate Doom Builder. Select ‘Tools’ from the menu bar in the top-left corner, and then ‘Game Configuration’. If you followed the previous steps correctly, Malefact should be listed among the other game configurations. Note that Malefact only supports the UDMF (Universal Doom Mapping Format) format. Once you’ve found Malefact on the list, select it by left-clicking on it. Make sure you’re on the ‘Resources’ tab, and click the ‘Add resource’ button. Now navigate to your Malefact folder and load the Malefact.ipk3 file. It should now appear on the resource list. This tells UDM where all the game assets are when you are making maps using the Malefact game configuration. <Image of the game configuration interface> You also need a second file that tells the editor you’re using the UZDoom (formerly known as GZDoom) source port. The process is the same: click the ‘Add resource’ button and add the UZDoom.pk3 file, which is also located in the same folder. Click the ‘Ok’ button, which will apply the settings and close the window automatically. === Starting a New Map === You should now have everything you need to get started. Select ‘New Map’ from the menu bar and make sure that the Malefact game configuration is selected from the list. Make sure that ‘Script Type’ is set to ZDOOM ACS if it isn’t already. The level name can technically be whatever you want (though I’d strongly advise against using special characters, e.g. !), though the standard practice is to use Doom’s mapslot structure, e.g. MAP01, E1M1, etc. For the sake of this tutorial, just name it MAP01. Leave the two checkboxes empty if they aren’t. You can ignore the ‘Add resource’ button for the moment (this is used for loading mods and custom assets). <Image of the ‘New Map’ interface> If everything loaded fine and you didn’t get a million error messages, that means you’re now officially ready to start crafting your own unholy holocaust carnage! [[Category:Tutorials And Guides]] 6181388cb69ded0b70364766db917b456511a368 567 566 2025-11-11T00:13:06Z MasterOfDisillusionment 431405 Protected "[[Malefact Tutorial 1]]": Official Malefact Tutorial written by the game's developer. ([Edit=Allow only administrators] (indefinite) [Rename=Allow only administrators] (indefinite)) wikitext text/x-wiki So you want to create your own customized genocide, eh? You’ve come to the right place. I’m the lead developer and level designer for [Malefact|Malefact: Evil Unchained]], and I will be showing you how to do exactly that. == Installing the Prerequisites == === Installing Ultimate Doom Builder === The first step in your genocide journey is to install the [[https://ultimatedoombuilder.github.io/|Ultimate Doom Builder]] level editor. This is a fairly straightforward process, and I assume you don’t need to be told how to install a desktop app. === Installing the Editor Configuration === UDM was originally created as a level-editing program for Doom and Heretic and comes preinstalled with configs for those games, but Malefact requires that its config be installed manually. You can download the required files [[FutureLinkToFiles|here]]. Inside the downloaded folder, you will find two files: * GZDoom_MalefactUDMF.cfg * Malefact_things.cfg You must then navigate to where you installed UDM. Usually, the install location will be something like C:\Users\MyUserName\AppData\Local\Programs\Ultimate Doom Builder If you cannot see the AppData folder, you may have to open File Explorer (e.g. the ‘View’ tab) and check the ‘Hidden items’ box to make it visible. Inside the Ultimate Doom Builder root folder, you’ll see another folder named ‘Configurations’. Open it. Once inside, place the GZDoom_MalefactUDMF.cfg file there. Inside this folder, you will also see another folder called ‘Includes’. Place the Malefact_things.cfg file inside that folder. <Image of where these files go> === Assigning Game Content === Now start Ultimate Doom Builder. Select ‘Tools’ from the menu bar in the top-left corner, and then ‘Game Configuration’. If you followed the previous steps correctly, Malefact should be listed among the other game configurations. Note that Malefact only supports the UDMF (Universal Doom Mapping Format) format. Once you’ve found Malefact on the list, select it by left-clicking on it. Make sure you’re on the ‘Resources’ tab, and click the ‘Add resource’ button. Now navigate to your Malefact folder and load the Malefact.ipk3 file. It should now appear on the resource list. This tells UDM where all the game assets are when you are making maps using the Malefact game configuration. <Image of the game configuration interface> You also need a second file that tells the editor you’re using the UZDoom (formerly known as GZDoom) source port. The process is the same: click the ‘Add resource’ button and add the UZDoom.pk3 file, which is also located in the same folder. Click the ‘Ok’ button, which will apply the settings and close the window automatically. === Starting a New Map === You should now have everything you need to get started. Select ‘New Map’ from the menu bar and make sure that the Malefact game configuration is selected from the list. Make sure that ‘Script Type’ is set to ZDOOM ACS if it isn’t already. The level name can technically be whatever you want (though I’d strongly advise against using special characters, e.g. !), though the standard practice is to use Doom’s mapslot structure, e.g. MAP01, E1M1, etc. For the sake of this tutorial, just name it MAP01. Leave the two checkboxes empty if they aren’t. You can ignore the ‘Add resource’ button for the moment (this is used for loading mods and custom assets). <Image of the ‘New Map’ interface> If everything loaded fine and you didn’t get a million error messages, that means you’re now officially ready to start crafting your own unholy holocaust carnage! [[Category:Tutorials And Guides]] 6181388cb69ded0b70364766db917b456511a368 569 567 2025-11-11T00:17:25Z MasterOfDisillusionment 431405 wikitext text/x-wiki So you want to create your own customized genocide, eh? You’ve come to the right place. I’m the lead developer and level designer for [[Malefact|Malefact: Evil Unchained]], and I will be showing you how to do exactly that. == Installing the Prerequisites == === Installing Ultimate Doom Builder === The first step in your genocide journey is to install the [[https://ultimatedoombuilder.github.io/|Ultimate Doom Builder]] level editor. This is a fairly straightforward process, and I assume you don’t need to be told how to install a desktop app. === Installing the Editor Configuration === UDM was originally created as a level-editing program for Doom and Heretic and comes preinstalled with configs for those games, but Malefact requires that its config be installed manually. You can download the required files [[FutureLinkToFiles|here]]. Inside the downloaded folder, you will find two files: * GZDoom_MalefactUDMF.cfg * Malefact_things.cfg You must then navigate to where you installed UDM. Usually, the install location will be something like C:\Users\MyUserName\AppData\Local\Programs\Ultimate Doom Builder If you cannot see the AppData folder, you may have to open File Explorer (e.g. the ‘View’ tab) and check the ‘Hidden items’ box to make it visible. Inside the Ultimate Doom Builder root folder, you’ll see another folder named ‘Configurations’. Open it. Once inside, place the GZDoom_MalefactUDMF.cfg file there. Inside this folder, you will also see another folder called ‘Includes’. Place the Malefact_things.cfg file inside that folder. <Image of where these files go> === Assigning Game Content === Now start Ultimate Doom Builder. Select ‘Tools’ from the menu bar in the top-left corner, and then ‘Game Configuration’. If you followed the previous steps correctly, Malefact should be listed among the other game configurations. Note that Malefact only supports the UDMF (Universal Doom Mapping Format) format. Once you’ve found Malefact on the list, select it by left-clicking on it. Make sure you’re on the ‘Resources’ tab, and click the ‘Add resource’ button. Now navigate to your Malefact folder and load the Malefact.ipk3 file. It should now appear on the resource list. This tells UDM where all the game assets are when you are making maps using the Malefact game configuration. <Image of the game configuration interface> You also need a second file that tells the editor you’re using the UZDoom (formerly known as GZDoom) source port. The process is the same: click the ‘Add resource’ button and add the UZDoom.pk3 file, which is also located in the same folder. Click the ‘Ok’ button, which will apply the settings and close the window automatically. === Starting a New Map === You should now have everything you need to get started. Select ‘New Map’ from the menu bar and make sure that the Malefact game configuration is selected from the list. Make sure that ‘Script Type’ is set to ZDOOM ACS if it isn’t already. The level name can technically be whatever you want (though I’d strongly advise against using special characters, e.g. !), though the standard practice is to use Doom’s mapslot structure, e.g. MAP01, E1M1, etc. For the sake of this tutorial, just name it MAP01. Leave the two checkboxes empty if they aren’t. You can ignore the ‘Add resource’ button for the moment (this is used for loading mods and custom assets). <Image of the ‘New Map’ interface> If everything loaded fine and you didn’t get a million error messages, that means you’re now officially ready to start crafting your own unholy holocaust carnage! [[Category:Tutorials And Guides]] dfacc46760434b1bd5b1a7c5bccad8a0f118ed9b 571 569 2025-11-11T00:52:08Z MasterOfDisillusionment 431405 wikitext text/x-wiki This series of tutorials was written for [[Malefact|Malefact: Evil Unchained]] by the lead developer and level designer. == Installing the Prerequisites == === Installing Ultimate Doom Builder === The first step in your genocide journey is to install the [[https://ultimatedoombuilder.github.io/|Ultimate Doom Builder]] level editor. This is a fairly straightforward process, and I assume you don’t need to be told how to install a desktop app. === Installing the Editor Configuration === UDM was originally created as a level-editing program for Doom and Heretic and comes preinstalled with configs for those games, but Malefact requires that its config be installed manually. You can download the required files [[FutureLinkToFiles|here]]. Inside the downloaded folder, you will find two files: * GZDoom_MalefactUDMF.cfg * Malefact_things.cfg You must then navigate to where you installed UDM. Usually, the install location will be something like C:\Users\MyUserName\AppData\Local\Programs\Ultimate Doom Builder If you cannot see the AppData folder, you may have to open File Explorer (e.g. the ‘View’ tab) and check the ‘Hidden items’ box to make it visible. Inside the Ultimate Doom Builder root folder, you’ll see another folder named ‘Configurations’. Open it. Once inside, place the GZDoom_MalefactUDMF.cfg file there. Inside this folder, you will also see another folder called ‘Includes’. Place the Malefact_things.cfg file inside that folder. <Image of where these files go> === Assigning Game Content === Now start Ultimate Doom Builder. Select ‘Tools’ from the menu bar in the top-left corner, and then ‘Game Configuration’. If you followed the previous steps correctly, Malefact should be listed among the other game configurations. Note that Malefact only supports the UDMF (Universal Doom Mapping Format) format. Once you’ve found Malefact on the list, select it by left-clicking on it. Make sure you’re on the ‘Resources’ tab, and click the ‘Add resource’ button. Now navigate to your Malefact folder and load the Malefact.ipk3 file. It should now appear on the resource list. This tells UDM where all the game assets are when you are making maps using the Malefact game configuration. <Image of the game configuration interface> You also need a second file that tells the editor you’re using the UZDoom (formerly known as GZDoom) source port. The process is the same: click the ‘Add resource’ button and add the UZDoom.pk3 file, which is also located in the same folder. Click the ‘Ok’ button, which will apply the settings and close the window automatically. === Starting a New Map === You should now have everything you need to get started. Select ‘New Map’ from the menu bar and make sure that the Malefact game configuration is selected from the list. Make sure that ‘Script Type’ is set to ZDOOM ACS if it isn’t already. The level name can technically be whatever you want (though I’d strongly advise against using special characters, e.g. !), though the standard practice is to use Doom’s mapslot structure, e.g. MAP01, E1M1, etc. For the sake of this tutorial, just name it MAP01. Leave the two checkboxes empty if they aren’t. You can ignore the ‘Add resource’ button for the moment (this is used for loading mods and custom assets). <Image of the ‘New Map’ interface> If everything loaded fine and you didn’t get error messages, that means you’re now ready to started. [[Category:Tutorials And Guides]] f04724b79b2bcbbf0b69483df6189106299455e4 572 571 2025-11-11T14:09:41Z MasterOfDisillusionment 431405 wikitext text/x-wiki This series of tutorials was written for [[Malefact|Malefact: Evil Unchained]] by the lead developer and level designer. == Installing the Prerequisites == === Installing Ultimate Doom Builder === The first step in your genocide journey is to install the [[https://ultimatedoombuilder.github.io/|Ultimate Doom Builder]] level editor. This is a fairly straightforward process; if you're even interested in game modding, I assume you don’t need to be told how to install a desktop app. === Installing the Editor Configuration === UDM was originally created as a level-editing program for Doom and Heretic and comes preinstalled with configs for those games, but Malefact requires that its config be installed manually. You can download the required files [[FutureLinkToFiles|here]]. Inside the downloaded folder, you will find two files: * GZDoom_MalefactUDMF.cfg * Malefact_things.cfg You must then navigate to where you installed UDM. Usually, the install location will be something like C:\Users\MyUserName\AppData\Local\Programs\Ultimate Doom Builder If you cannot see the AppData folder, you may have to open File Explorer (e.g. the ‘View’ tab) and check the ‘Hidden items’ box to make it visible. Inside the Ultimate Doom Builder root folder, you’ll see another folder named ‘Configurations’. Open it. Once inside, place the GZDoom_MalefactUDMF.cfg file there. Inside this folder, you will also see another folder called ‘Includes’. Place the Malefact_things.cfg file inside that folder. <Image of where these files go> === Assigning Game Content === Now start Ultimate Doom Builder. Select ‘Tools’ from the menu bar in the top-left corner, and then ‘Game Configuration’. If you followed the previous steps correctly, Malefact should be listed among the other game configurations. Note that Malefact only supports the UDMF (Universal Doom Mapping Format) format. Once you’ve found Malefact on the list, select it by left-clicking on it. Make sure you’re on the ‘Resources’ tab, and click the ‘Add resource’ button. Now navigate to your Malefact folder and load the Malefact.ipk3 file. It should now appear on the resource list. This tells UDM where all the game assets are when you are making maps using the Malefact game configuration. <Image of the game configuration interface> You also need a second file that tells the editor you’re using the UZDoom (formerly known as GZDoom) source port. The process is the same: click the ‘Add resource’ button and add the UZDoom.pk3 file, which is also located in the same folder. Click the ‘Ok’ button, which will apply the settings and close the window automatically. === Starting a New Map === You should now have everything you need to get started. Select ‘New Map’ from the menu bar and make sure that the Malefact game configuration is selected from the list. Make sure that ‘Script Type’ is set to ZDOOM ACS if it isn’t already. The level name can technically be whatever you want (though I’d strongly advise against using special characters, e.g. !), though the standard practice is to use Doom’s mapslot structure, e.g. MAP01, E1M1, etc. For the sake of this tutorial, just name it MAP01. Leave the two checkboxes empty if they aren’t. You can ignore the ‘Add resource’ button for the moment (this is used for loading mods and custom assets). <Image of the ‘New Map’ interface> If everything loaded fine and you didn’t get error messages, that means you’re now ready to started. [[Category:Tutorials And Guides]] f382021a54d0a66b8f685973ee741cf7408332a5 573 572 2025-11-11T14:10:11Z MasterOfDisillusionment 431405 wikitext text/x-wiki This series of tutorials was written for [[Malefact|Malefact: Evil Unchained]] by the lead developer and level designer. == Installing the Prerequisites == === Installing Ultimate Doom Builder === The first step in your genocide journey is to install the [[https://ultimatedoombuilder.github.io/|Ultimate Doom Builder]] level editor. This is a fairly straightforward process; if you're even interested in game modding, I assume you don’t need to be told how to install a desktop app. === Installing the Editor Configuration === UDM was originally created as a level-editing program for Doom and Heretic and comes preinstalled with configs for those games, but Malefact requires that its config be installed manually. You can download the required files [[FutureLinkToFiles|here]]. Inside the downloaded folder, you will find two files: * GZDoom_MalefactUDMF.cfg * Malefact_things.cfg You must then navigate to where you installed UDM. Usually, the install location will be something like C:\Users\MyUserName\AppData\Local\Programs\Ultimate Doom Builder If you cannot see the AppData folder, you may have to open File Explorer (e.g. the ‘View’ tab) and check the ‘Hidden items’ box to make it visible. Inside the Ultimate Doom Builder root folder, you’ll see another folder named ‘Configurations’. Open it. Once inside, place the GZDoom_MalefactUDMF.cfg file there. Inside this folder, you will also see another folder called ‘Includes’. Place the Malefact_things.cfg file inside that folder. <Image of where these files go> === Assigning Game Content === Now start Ultimate Doom Builder. Select ‘Tools’ from the menu bar in the top-left corner, and then ‘Game Configuration’. If you followed the previous steps correctly, Malefact should be listed among the other game configurations. Note that Malefact only supports the UDMF (Universal Doom Mapping Format) format. Once you’ve found Malefact on the list, select it by left-clicking on it. Make sure you’re on the ‘Resources’ tab, and click the ‘Add resource’ button. Now navigate to your Malefact folder and load the Malefact.ipk3 file. It should now appear on the resource list. This tells UDM where all the game assets are when you are making maps using the Malefact game configuration. <Image of the game configuration interface> You also need a second file that tells the editor you’re using the UZDoom (formerly known as GZDoom) source port. The process is the same: click the ‘Add resource’ button and add the UZDoom.pk3 file, which is also located in the same folder. Click the ‘Ok’ button, which will apply the settings and close the window automatically. === Starting a New Map === You should now have everything you need to get started. Select ‘New Map’ from the menu bar and make sure that the Malefact game configuration is selected from the list. Make sure that ‘Script Type’ is set to ZDOOM ACS if it isn’t already. The level name can technically be whatever you want (though I’d strongly advise against using special characters, e.g. !), though the standard practice is to use Doom’s mapslot structure, e.g. MAP01, E1M1, etc. For the sake of this tutorial, just name it MAP01. Leave the two checkboxes empty if they aren’t. You can ignore the ‘Add resource’ button for the moment (this is used for loading mods and custom assets). <Image of the ‘New Map’ interface> If everything loaded fine and you didn’t get error messages, that means you’re now ready to start. [[Category:Tutorials And Guides]] de8fc43ebf148fa21ac095f4ca8e5a437a508552 575 573 2025-11-11T14:37:24Z MasterOfDisillusionment 431405 wikitext text/x-wiki This series of tutorials was written for [[Malefact|Malefact: Evil Unchained]] by the lead developer and level designer. == Installing the Prerequisites == === Installing Ultimate Doom Builder === The first step in your genocide journey is to install the [https://ultimatedoombuilder.github.io/ Ultimate Doom Builder] level editor. This is a fairly straightforward process; if you're even interested in game modding, I assume you don’t need to be told how to install a desktop app. === Installing the Editor Configuration === UDM was originally created as a level-editing program for Doom and Heretic and comes preinstalled with configs for those games, but Malefact requires that its config be installed manually. You can download the required files [[FutureLinkToFiles|here]]. Inside the downloaded folder, you will find two files: * GZDoom_MalefactUDMF.cfg * Malefact_things.cfg You must then navigate to where you installed UDM. Usually, the install location will be something like C:\Users\MyUserName\AppData\Local\Programs\Ultimate Doom Builder If you cannot see the AppData folder, you may have to open File Explorer (e.g. the ‘View’ tab) and check the ‘Hidden items’ box to make it visible. Inside the Ultimate Doom Builder root folder, you’ll see another folder named ‘Configurations’. Open it. Once inside, place the GZDoom_MalefactUDMF.cfg file there. Inside this folder, you will also see another folder called ‘Includes’. Place the Malefact_things.cfg file inside that folder. <Image of where these files go> === Assigning Game Content === Now start Ultimate Doom Builder. Select ‘Tools’ from the menu bar in the top-left corner, and then ‘Game Configuration’. If you followed the previous steps correctly, Malefact should be listed among the other game configurations. Note that Malefact only supports the UDMF (Universal Doom Mapping Format) format. Once you’ve found Malefact on the list, select it by left-clicking on it. Make sure you’re on the ‘Resources’ tab, and click the ‘Add resource’ button. Now navigate to your Malefact folder and load the Malefact.ipk3 file. It should now appear on the resource list. This tells UDM where all the game assets are when you are making maps using the Malefact game configuration. <Image of the game configuration interface> You also need a second file that tells the editor you’re using the UZDoom (formerly known as GZDoom) source port. The process is the same: click the ‘Add resource’ button and add the UZDoom.pk3 file, which is also located in the same folder. Click the ‘Ok’ button, which will apply the settings and close the window automatically. === Starting a New Map === You should now have everything you need to get started. Select ‘New Map’ from the menu bar and make sure that the Malefact game configuration is selected from the list. Make sure that ‘Script Type’ is set to ZDOOM ACS if it isn’t already. The level name can technically be whatever you want (though I’d strongly advise against using special characters, e.g. !), though the standard practice is to use Doom’s mapslot structure, e.g. MAP01, E1M1, etc. For the sake of this tutorial, just name it MAP01. Leave the two checkboxes empty if they aren’t. You can ignore the ‘Add resource’ button for the moment (this is used for loading mods and custom assets). <Image of the ‘New Map’ interface> If everything loaded fine and you didn’t get error messages, that means you’re now ready to start. [[Category:Tutorials And Guides]] 675d2f88fc5002dabf0af428758c90d53725df90 579 575 2025-11-11T15:54:44Z MasterOfDisillusionment 431405 wikitext text/x-wiki This series of tutorials was written for [[Malefact|Malefact: Evil Unchained]] by the lead developer and level designer. == Installing the Prerequisites == === Installing Ultimate Doom Builder === The first step in your genocide journey is to install the [https://ultimatedoombuilder.github.io/ Ultimate Doom Builder] level editor. This is a fairly straightforward process; if you're even interested in game modding, I assume you don’t need to be told how to install a desktop app. === Installing the Editor Configuration === UDM was originally created as a level-editing program for Doom and Heretic and comes preinstalled with configs for those games, but Malefact requires that its config be installed manually. You can download the required files [[FutureLinkToFiles|here]]. Inside the downloaded folder, you will find two files: * GZDoom_MalefactUDMF.cfg * Malefact_things.cfg You must then navigate to where you installed UDM. Usually, the install location will be something like C:\Users\MyUserName\AppData\Local\Programs\Ultimate Doom Builder If you cannot see the AppData folder, you may have to open File Explorer (e.g. the ‘View’ tab) and check the ‘Hidden items’ box to make it visible. Inside the Ultimate Doom Builder root folder, you’ll see another folder named ‘Configurations’. Open it. Once inside, place the GZDoom_MalefactUDMF.cfg file there. Inside this folder, you will also see another folder called ‘Includes’. Place the Malefact_things.cfg file inside that folder. [[File:UDMFolder.png|thumb|none|Your Ultimate Doom Builder root folder should look like this.]] === Assigning Game Content === Now start Ultimate Doom Builder. Select ‘Tools’ from the menu bar in the top-left corner, and then ‘Game Configuration’. If you followed the previous steps correctly, Malefact should be listed among the other game configurations. Note that Malefact only supports the UDMF (Universal Doom Mapping Format) format. Once you’ve found Malefact on the list, select it by left-clicking on it. Make sure you’re on the ‘Resources’ tab, and click the ‘Add resource’ button. Now navigate to your Malefact folder and load the Malefact.ipk3 file. It should now appear on the resource list. This tells UDM where all the game assets are when you are making maps using the Malefact game configuration. <Image of the game configuration interface> You also need a second file that tells the editor you’re using the UZDoom (formerly known as GZDoom) source port. The process is the same: click the ‘Add resource’ button and add the UZDoom.pk3 file, which is also located in the same folder. Click the ‘Ok’ button, which will apply the settings and close the window automatically. === Starting a New Map === You should now have everything you need to get started. Select ‘New Map’ from the menu bar and make sure that the Malefact game configuration is selected from the list. Make sure that ‘Script Type’ is set to ZDOOM ACS if it isn’t already. The level name can technically be whatever you want (though I’d strongly advise against using special characters, e.g. !), though the standard practice is to use Doom’s mapslot structure, e.g. MAP01, E1M1, etc. For the sake of this tutorial, just name it MAP01. Leave the two checkboxes empty if they aren’t. You can ignore the ‘Add resource’ button for the moment (this is used for loading mods and custom assets). <Image of the ‘New Map’ interface> If everything loaded fine and you didn’t get error messages, that means you’re now ready to start. [[Category:Tutorials And Guides]] e33fa97c6a7e61a587f0bf447f6f361977c18c51 585 579 2025-11-11T16:10:04Z MasterOfDisillusionment 431405 wikitext text/x-wiki This series of tutorials was written for [[Malefact|Malefact: Evil Unchained]] by the lead developer and level designer. == Installing the Prerequisites == === Installing Ultimate Doom Builder === The first step in your genocide journey is to install the [https://ultimatedoombuilder.github.io/ Ultimate Doom Builder] level editor. This is a fairly straightforward process; if you're even interested in game modding, I assume you don’t need to be told how to install a desktop app. === Installing the Editor Configuration === UDM was originally created as a level-editing program for Doom and Heretic and comes preinstalled with configs for those games, but Malefact requires that its config be installed manually. You can download the required files [[FutureLinkToFiles|here]]. Inside the downloaded folder, you will find two files: * GZDoom_MalefactUDMF.cfg * Malefact_things.cfg You must then navigate to where you installed UDM. Usually, the install location will be something like C:\Users\MyUserName\AppData\Local\Programs\Ultimate Doom Builder If you cannot see the AppData folder, you may have to open File Explorer (e.g. the ‘View’ tab) and check the ‘Hidden items’ box to make it visible. Inside the Ultimate Doom Builder root folder, you’ll see another folder named ‘Configurations’. Open it. Once inside, place the GZDoom_MalefactUDMF.cfg file there. Inside this folder, you will also see another folder called ‘Includes’. Place the Malefact_things.cfg file inside that folder. [[File:UDMFolder.png|thumb|none|Your Ultimate Doom Builder root folder should look like this.]] === Assigning Game Content === Now start Ultimate Doom Builder. Select ‘Tools’ from the menu bar in the top-left corner, and then ‘Game Configuration’. If you followed the previous steps correctly, Malefact should be listed among the other game configurations. Note that Malefact only supports the UDMF (Universal Doom Mapping Format) format. Once you’ve found Malefact on the list, select it by left-clicking on it. Make sure you’re on the ‘Resources’ tab, and click the ‘Add resource’ button. Now navigate to your Malefact folder and load the Malefact.ipk3 file. It should now appear on the resource list. This tells UDM where all the game assets are when you are making maps using the Malefact game configuration. [[File:Tutorial1 2.png|thumb|none|The Malefact config should now be listed among the others. ]] You also need a second file that tells the editor you’re using the UZDoom (formerly known as GZDoom) source port. The process is the same: click the ‘Add resource’ button and add the UZDoom.pk3 file, which is also located in the same folder. Click the ‘Ok’ button, which will apply the settings and close the window automatically. === Starting a New Map === You should now have everything you need to get started. Select ‘New Map’ from the menu bar and make sure that the Malefact game configuration is selected from the list. Make sure that ‘Script Type’ is set to ZDOOM ACS if it isn’t already. The level name can technically be whatever you want (though I’d strongly advise against using special characters, e.g. !), though the standard practice is to use Doom’s mapslot structure, e.g. MAP01, E1M1, etc. For the sake of this tutorial, just name it MAP01. Leave the two checkboxes empty if they aren’t. You can ignore the ‘Add resource’ button for the moment (this is used for loading mods and custom assets). [[File:Tutorial1 3.png|thumb|none|The Map Options Menu. Your Malefact and UZDoom pk3 files should be listed automatically if you completed the earlier step.]] If everything loaded fine and you didn’t get error messages, that means you’re now ready to start. [[Category:Tutorials And Guides]] 0a9cf461f1db4109e08c5b15ded5dad721fa4569 586 585 2025-11-11T16:10:47Z MasterOfDisillusionment 431405 wikitext text/x-wiki This series of tutorials was written for [[Malefact|Malefact: Evil Unchained]] by the lead developer and level designer. == Installing the Prerequisites == === Installing Ultimate Doom Builder === The first step in your genocide journey is to install the [https://ultimatedoombuilder.github.io/ Ultimate Doom Builder] level editor. === Installing the Editor Configuration === UDM was originally created as a level-editing program for Doom and Heretic and comes preinstalled with configs for those games, but Malefact requires that its config be installed manually. You can download the required files [[FutureLinkToFiles|here]]. Inside the downloaded folder, you will find two files: * GZDoom_MalefactUDMF.cfg * Malefact_things.cfg You must then navigate to where you installed UDM. Usually, the install location will be something like C:\Users\MyUserName\AppData\Local\Programs\Ultimate Doom Builder If you cannot see the AppData folder, you may have to open File Explorer (e.g. the ‘View’ tab) and check the ‘Hidden items’ box to make it visible. Inside the Ultimate Doom Builder root folder, you’ll see another folder named ‘Configurations’. Open it. Once inside, place the GZDoom_MalefactUDMF.cfg file there. Inside this folder, you will also see another folder called ‘Includes’. Place the Malefact_things.cfg file inside that folder. [[File:UDMFolder.png|thumb|none|Your Ultimate Doom Builder root folder should look like this.]] === Assigning Game Content === Now start Ultimate Doom Builder. Select ‘Tools’ from the menu bar in the top-left corner, and then ‘Game Configuration’. If you followed the previous steps correctly, Malefact should be listed among the other game configurations. Note that Malefact only supports the UDMF (Universal Doom Mapping Format) format. Once you’ve found Malefact on the list, select it by left-clicking on it. Make sure you’re on the ‘Resources’ tab, and click the ‘Add resource’ button. Now navigate to your Malefact folder and load the Malefact.ipk3 file. It should now appear on the resource list. This tells UDM where all the game assets are when you are making maps using the Malefact game configuration. [[File:Tutorial1 2.png|thumb|none|The Malefact config should now be listed among the others. ]] You also need a second file that tells the editor you’re using the UZDoom (formerly known as GZDoom) source port. The process is the same: click the ‘Add resource’ button and add the UZDoom.pk3 file, which is also located in the same folder. Click the ‘Ok’ button, which will apply the settings and close the window automatically. === Starting a New Map === You should now have everything you need to get started. Select ‘New Map’ from the menu bar and make sure that the Malefact game configuration is selected from the list. Make sure that ‘Script Type’ is set to ZDOOM ACS if it isn’t already. The level name can technically be whatever you want (though I’d strongly advise against using special characters, e.g. !), though the standard practice is to use Doom’s mapslot structure, e.g. MAP01, E1M1, etc. For the sake of this tutorial, just name it MAP01. Leave the two checkboxes empty if they aren’t. You can ignore the ‘Add resource’ button for the moment (this is used for loading mods and custom assets). [[File:Tutorial1 3.png|thumb|none|The Map Options Menu. Your Malefact and UZDoom pk3 files should be listed automatically if you completed the earlier step.]] If everything loaded fine and you didn’t get error messages, that means you’re now ready to start. [[Category:Tutorials And Guides]] 7941644c9761ab54fcc47749e701fe00622a7b44 587 586 2025-11-11T16:16:16Z MasterOfDisillusionment 431405 wikitext text/x-wiki This series of tutorials was written for [[Malefact|Malefact: Evil Unchained]] by the lead developer and level designer. == Installing the Prerequisites == === Installing Ultimate Doom Builder === The first step in your genocide journey is to install the [https://ultimatedoombuilder.github.io/ Ultimate Doom Builder] level editor. === Installing the Editor Configuration === UDM was originally created as a level-editing program for Doom and Heretic and comes preinstalled with configs for those games, but Malefact requires that its config be installed manually. You can download the required files [[FutureLinkToFiles|here]]. Inside the downloaded folder, you will find two files: * GZDoom_MalefactUDMF.cfg * Malefact_things.cfg You must then navigate to where you installed UDM. Usually, the install location will be something like C:\Users\MyUserName\AppData\Local\Programs\Ultimate Doom Builder If you cannot see the AppData folder, you may have to open File Explorer (e.g. the ‘View’ tab) and check the ‘Hidden items’ box to make it visible. Inside the Ultimate Doom Builder root folder, you’ll see another folder named ‘Configurations’. Open it. Once inside, place the GZDoom_MalefactUDMF.cfg file there. Inside this folder, you will also see another folder called ‘Includes’. Place the Malefact_things.cfg file inside that folder. [[File:UDMFolder.png|thumb|none|Your Ultimate Doom Builder root folder should look like this.]] === Assigning Game Content === Now start Ultimate Doom Builder. Select ‘Tools’ from the menu bar in the top-left corner, and then ‘Game Configuration’. If you followed the previous steps correctly, Malefact should be listed among the other game configurations. Note that Malefact only supports the UDMF (Universal Doom Mapping Format) format. Once you’ve found Malefact on the list, select it by left-clicking on it. Make sure you’re on the ‘Resources’ tab, and click the ‘Add resource’ button. Now navigate to your Malefact folder and load the Malefact.ipk3 file. It should now appear on the resource list. This tells UDM where all the game assets are when you are making maps using the Malefact game configuration. [[File:Tutorial1 2.png|thumb|none|The Malefact config should now be listed among the others. ]] You also need a second file that tells the editor you’re using the UZDoom (formerly known as GZDoom) source port. The process is the same: click the ‘Add resource’ button and add the UZDoom.pk3 file, which is also located in the same folder. Click the ‘Ok’ button, which will apply the settings and close the window automatically. === Starting a New Map === You should now have everything you need to get started. Select ‘New Map’ from the menu bar and make sure that the Malefact game configuration is selected from the list. Make sure that ‘Script Type’ is set to ZDOOM ACS if it isn’t already. The level name can technically be whatever you want (though I’d strongly advise against using special characters, e.g. !), though the standard practice is to use Doom’s mapslot structure, e.g. MAP01, E1M1, etc. For the sake of this tutorial, just name it MAP01. Leave the two checkboxes empty if they aren’t. You can ignore the ‘Add resource’ button for the moment (this is used for loading mods and custom assets). Once you're happy with the settings, click the OK button. [[File:Tutorial1 3.png|thumb|none|The Map Options Menu. Your Malefact and UZDoom pk3 files should be listed automatically if you completed the earlier step.]] If everything loaded fine and you didn’t get error messages, that means you’re now ready to start. [[Sector Creation|Next Tutorial: Sector Creation]] [[Malefact Mapping Tutorials|Tutorial Index]] [[Category:Tutorials And Guides]] 2246888d8da09663ccb64d06f59c36505f99cb5c 588 587 2025-11-11T16:16:27Z MasterOfDisillusionment 431405 wikitext text/x-wiki This series of tutorials was written for [[Malefact|Malefact: Evil Unchained]] by the lead developer and level designer. == Installing the Prerequisites == === Installing Ultimate Doom Builder === The first step in your genocide journey is to install the [https://ultimatedoombuilder.github.io/ Ultimate Doom Builder] level editor. === Installing the Editor Configuration === UDM was originally created as a level-editing program for Doom and Heretic and comes preinstalled with configs for those games, but Malefact requires that its config be installed manually. You can download the required files [[FutureLinkToFiles|here]]. Inside the downloaded folder, you will find two files: * GZDoom_MalefactUDMF.cfg * Malefact_things.cfg You must then navigate to where you installed UDM. Usually, the install location will be something like C:\Users\MyUserName\AppData\Local\Programs\Ultimate Doom Builder If you cannot see the AppData folder, you may have to open File Explorer (e.g. the ‘View’ tab) and check the ‘Hidden items’ box to make it visible. Inside the Ultimate Doom Builder root folder, you’ll see another folder named ‘Configurations’. Open it. Once inside, place the GZDoom_MalefactUDMF.cfg file there. Inside this folder, you will also see another folder called ‘Includes’. Place the Malefact_things.cfg file inside that folder. [[File:UDMFolder.png|thumb|none|Your Ultimate Doom Builder root folder should look like this.]] === Assigning Game Content === Now start Ultimate Doom Builder. Select ‘Tools’ from the menu bar in the top-left corner, and then ‘Game Configuration’. If you followed the previous steps correctly, Malefact should be listed among the other game configurations. Note that Malefact only supports the UDMF (Universal Doom Mapping Format) format. Once you’ve found Malefact on the list, select it by left-clicking on it. Make sure you’re on the ‘Resources’ tab, and click the ‘Add resource’ button. Now navigate to your Malefact folder and load the Malefact.ipk3 file. It should now appear on the resource list. This tells UDM where all the game assets are when you are making maps using the Malefact game configuration. [[File:Tutorial1 2.png|thumb|none|The Malefact config should now be listed among the others. ]] You also need a second file that tells the editor you’re using the UZDoom (formerly known as GZDoom) source port. The process is the same: click the ‘Add resource’ button and add the UZDoom.pk3 file, which is also located in the same folder. Click the ‘Ok’ button, which will apply the settings and close the window automatically. === Starting a New Map === You should now have everything you need to get started. Select ‘New Map’ from the menu bar and make sure that the Malefact game configuration is selected from the list. Make sure that ‘Script Type’ is set to ZDOOM ACS if it isn’t already. The level name can technically be whatever you want (though I’d strongly advise against using special characters, e.g. !), though the standard practice is to use Doom’s mapslot structure, e.g. MAP01, E1M1, etc. For the sake of this tutorial, just name it MAP01. Leave the two checkboxes empty if they aren’t. You can ignore the ‘Add resource’ button for the moment (this is used for loading mods and custom assets). Once you're happy with the settings, click the OK button. [[File:Tutorial1 3.png|thumb|none|The Map Options Menu. Your Malefact and UZDoom pk3 files should be listed automatically if you completed the earlier step.]] If everything loaded fine and you didn’t get error messages, that means you’re now ready to start. [[Sector Creation|Next Tutorial: Sector Creation]] [[Malefact Mapping Tutorials|Tutorial Index]] [[Category:Tutorials And Guides]] d7c25f057a33789c9aa2af2dd8e27aca23cc507a 589 588 2025-11-11T16:19:35Z MasterOfDisillusionment 431405 wikitext text/x-wiki This series of tutorials was written for [[Malefact|Malefact: Evil Unchained]] by the lead developer and level designer. == Installing the Prerequisites == === Installing Ultimate Doom Builder === The first step in your genocide journey is to install the [https://ultimatedoombuilder.github.io/ Ultimate Doom Builder] level editor. === Installing the Editor Configuration === UDM was originally created as a level-editing program for Doom and Heretic and comes preinstalled with configs for those games, but Malefact requires that its config be installed manually. You can download the required files [[FutureLinkToFiles|here]]. Inside the downloaded folder, you will find two files: * GZDoom_MalefactUDMF.cfg * Malefact_things.cfg You must then navigate to where you installed UDM. Usually, the install location will be something like C:\Users\MyUserName\AppData\Local\Programs\Ultimate Doom Builder If you cannot see the AppData folder, you may have to open File Explorer (e.g. the ‘View’ tab) and check the ‘Hidden items’ box to make it visible. Inside the Ultimate Doom Builder root folder, you’ll see another folder named ‘Configurations’. Open it. Once inside, place the GZDoom_MalefactUDMF.cfg file there. Inside this folder, you will also see another folder called ‘Includes’. Place the Malefact_things.cfg file inside that folder. [[File:UDMFolder.png|thumb|none|Your Ultimate Doom Builder root folder should look like this.]] === Assigning Game Content === Now start Ultimate Doom Builder. Select ‘Tools’ from the menu bar in the top-left corner, and then ‘Game Configuration’. If you followed the previous steps correctly, Malefact should be listed among the other game configurations. Note that Malefact only supports the UDMF (Universal Doom Mapping Format) format. Once you’ve found Malefact on the list, select it by left-clicking on it. Make sure you’re on the ‘Resources’ tab, and click the ‘Add resource’ button. Now navigate to your Malefact folder and load the Malefact.ipk3 file. It should now appear on the resource list. This tells UDM where all the game assets are when you are making maps using the Malefact game configuration. [[File:Tutorial1 2.png|thumb|none|The Malefact config should now be listed among the others. ]] You also need a second file that tells the editor you’re using the UZDoom (formerly known as GZDoom) source port. The process is the same: click the ‘Add resource’ button and add the UZDoom.pk3 file, which is also located in the same folder. Click the ‘Ok’ button, which will apply the settings and close the window automatically. === Starting a New Map === You should now have everything you need to get started. Select ‘New Map’ from the menu bar and make sure that the Malefact game configuration is selected from the list. Make sure that ‘Script Type’ is set to ZDOOM ACS if it isn’t already. The level name can technically be whatever you want (though I’d strongly advise against using special characters, e.g. !), though the standard practice is to use Doom’s mapslot structure, e.g. MAP01, E1M1, etc. For the sake of this tutorial, just name it MAP01. Leave the two checkboxes empty if they aren’t. You can ignore the ‘Add resource’ button for the moment (this is used for loading mods and custom assets). Once you're happy with the settings, click the OK button. [[File:Tutorial1 3.png|thumb|none|The Map Options Menu. Your Malefact and UZDoom pk3 files should be listed automatically if you completed the earlier step.]] If everything loaded fine and you didn’t get error messages, that means you’re now ready to start. == Navigation == [[Sector Creation|Next Tutorial: Sector Creation]] [[Malefact Mapping Tutorials|Tutorial Index]] [[Category:Tutorials And Guides]] 3d34448a8f1ac2a94d5973dc2da3050ae9afaaec 596 589 2025-11-12T01:11:09Z MasterOfDisillusionment 431405 MasterOfDisillusionment renamed page [[Malefact Tutorial 1]] to [[Installing Prerequisites Tutorial]]: Misspelled title wikitext text/x-wiki This series of tutorials was written for [[Malefact|Malefact: Evil Unchained]] by the lead developer and level designer. == Installing the Prerequisites == === Installing Ultimate Doom Builder === The first step in your genocide journey is to install the [https://ultimatedoombuilder.github.io/ Ultimate Doom Builder] level editor. === Installing the Editor Configuration === UDM was originally created as a level-editing program for Doom and Heretic and comes preinstalled with configs for those games, but Malefact requires that its config be installed manually. You can download the required files [[FutureLinkToFiles|here]]. Inside the downloaded folder, you will find two files: * GZDoom_MalefactUDMF.cfg * Malefact_things.cfg You must then navigate to where you installed UDM. Usually, the install location will be something like C:\Users\MyUserName\AppData\Local\Programs\Ultimate Doom Builder If you cannot see the AppData folder, you may have to open File Explorer (e.g. the ‘View’ tab) and check the ‘Hidden items’ box to make it visible. Inside the Ultimate Doom Builder root folder, you’ll see another folder named ‘Configurations’. Open it. Once inside, place the GZDoom_MalefactUDMF.cfg file there. Inside this folder, you will also see another folder called ‘Includes’. Place the Malefact_things.cfg file inside that folder. [[File:UDMFolder.png|thumb|none|Your Ultimate Doom Builder root folder should look like this.]] === Assigning Game Content === Now start Ultimate Doom Builder. Select ‘Tools’ from the menu bar in the top-left corner, and then ‘Game Configuration’. If you followed the previous steps correctly, Malefact should be listed among the other game configurations. Note that Malefact only supports the UDMF (Universal Doom Mapping Format) format. Once you’ve found Malefact on the list, select it by left-clicking on it. Make sure you’re on the ‘Resources’ tab, and click the ‘Add resource’ button. Now navigate to your Malefact folder and load the Malefact.ipk3 file. It should now appear on the resource list. This tells UDM where all the game assets are when you are making maps using the Malefact game configuration. [[File:Tutorial1 2.png|thumb|none|The Malefact config should now be listed among the others. ]] You also need a second file that tells the editor you’re using the UZDoom (formerly known as GZDoom) source port. The process is the same: click the ‘Add resource’ button and add the UZDoom.pk3 file, which is also located in the same folder. Click the ‘Ok’ button, which will apply the settings and close the window automatically. === Starting a New Map === You should now have everything you need to get started. Select ‘New Map’ from the menu bar and make sure that the Malefact game configuration is selected from the list. Make sure that ‘Script Type’ is set to ZDOOM ACS if it isn’t already. The level name can technically be whatever you want (though I’d strongly advise against using special characters, e.g. !), though the standard practice is to use Doom’s mapslot structure, e.g. MAP01, E1M1, etc. For the sake of this tutorial, just name it MAP01. Leave the two checkboxes empty if they aren’t. You can ignore the ‘Add resource’ button for the moment (this is used for loading mods and custom assets). Once you're happy with the settings, click the OK button. [[File:Tutorial1 3.png|thumb|none|The Map Options Menu. Your Malefact and UZDoom pk3 files should be listed automatically if you completed the earlier step.]] If everything loaded fine and you didn’t get error messages, that means you’re now ready to start. == Navigation == [[Sector Creation|Next Tutorial: Sector Creation]] [[Malefact Mapping Tutorials|Tutorial Index]] [[Category:Tutorials And Guides]] 3d34448a8f1ac2a94d5973dc2da3050ae9afaaec 598 596 2025-11-12T01:11:34Z MasterOfDisillusionment 431405 wikitext text/x-wiki This series of tutorials was written for [[Malefact|Malefact: Evil Unchained]] by the lead developer and level designer. == Installing the Prerequisites == === Installing Ultimate Doom Builder === The first step in your genocide journey is to install the [https://ultimatedoombuilder.github.io/ Ultimate Doom Builder] level editor. === Installing the Editor Configuration === UDM was originally created as a level-editing program for Doom and Heretic and comes preinstalled with configs for those games, but Malefact requires that its config be installed manually. You can download the required files [[FutureLinkToFiles|here]]. Inside the downloaded folder, you will find two files: * GZDoom_MalefactUDMF.cfg * Malefact_things.cfg You must then navigate to where you installed UDM. Usually, the install location will be something like C:\Users\MyUserName\AppData\Local\Programs\Ultimate Doom Builder If you cannot see the AppData folder, you may have to open File Explorer (e.g. the ‘View’ tab) and check the ‘Hidden items’ box to make it visible. Inside the Ultimate Doom Builder root folder, you’ll see another folder named ‘Configurations’. Open it. Once inside, place the GZDoom_MalefactUDMF.cfg file there. Inside this folder, you will also see another folder called ‘Includes’. Place the Malefact_things.cfg file inside that folder. [[File:UDMFolder.png|thumb|none|Your Ultimate Doom Builder root folder should look like this.]] === Assigning Game Content === Now start Ultimate Doom Builder. Select ‘Tools’ from the menu bar in the top-left corner, and then ‘Game Configuration’. If you followed the previous steps correctly, Malefact should be listed among the other game configurations. Note that Malefact only supports the UDMF (Universal Doom Mapping Format) format. Once you’ve found Malefact on the list, select it by left-clicking on it. Make sure you’re on the ‘Resources’ tab, and click the ‘Add resource’ button. Now navigate to your Malefact folder and load the Malefact.ipk3 file. It should now appear on the resource list. This tells UDM where all the game assets are when you are making maps using the Malefact game configuration. [[File:Tutorial1 2.png|thumb|none|The Malefact config should now be listed among the others. ]] You also need a second file that tells the editor you’re using the UZDoom (formerly known as GZDoom) source port. The process is the same: click the ‘Add resource’ button and add the UZDoom.pk3 file, which is also located in the same folder. Click the ‘Ok’ button, which will apply the settings and close the window automatically. === Starting a New Map === You should now have everything you need to get started. Select ‘New Map’ from the menu bar and make sure that the Malefact game configuration is selected from the list. Make sure that ‘Script Type’ is set to ZDOOM ACS if it isn’t already. The level name can technically be whatever you want (though I’d strongly advise against using special characters, e.g. !), though the standard practice is to use Doom’s mapslot structure, e.g. MAP01, E1M1, etc. For the sake of this tutorial, just name it MAP01. Leave the two checkboxes empty if they aren’t. You can ignore the ‘Add resource’ button for the moment (this is used for loading mods and custom assets). Once you're happy with the settings, click the OK button. [[File:Tutorial1 3.png|thumb|none|The Map Options Menu. Your Malefact and UZDoom pk3 files should be listed automatically if you completed the earlier step.]] If everything loaded fine and you didn’t get error messages, that means you’re now ready to start. == Navigation == [[Sector Creation Tutorial|Next Tutorial: Sector Creation]] [[Malefact Mapping Tutorials|Tutorial Index]] [[Category:Tutorials And Guides]] fe69fb23c939179133ec3f55cbb20d2521e82bd3 File:DoomCover.jpg 6 305 568 363 2025-11-11T00:15:01Z MasterOfDisillusionment 431405 Removed protection from "[[File:DoomCover.jpg]]" wikitext text/x-wiki == Summary == Cover art for Doom. == Licensing == {{License|fairuse}} 66ba17c907796cd30787791247cc4301d3ff36be Tutorials And Guides 0 317 570 433 2025-11-11T00:18:53Z MasterOfDisillusionment 431405 wikitext text/x-wiki If you're a newcomer to modding or mapping using the UZDoom engine, this page contains useful resources for getting started. == Guides & Tutorials == Guides created by our own community. === [[Malefact Mapping Tutorials]] === A level design guide for Malefact, geared toward newcomers to the game, written by the game's lead developer and level designer. == Third Party Guides & Tutorials == === Level Editing & Scripting === Guides created outside our community. Note: While Doom Builder 2 is considered defunct in favor of Ultimate Doom Builder, most general functionality carries over. Just keep in mind that there may be some minor differences when watching older tutorial videos. * [[https://youtube.com/playlist?list=PLQrQ055Wd7p77pBCmTQT6kW-K8Plmw_D-&si=DHhSQQcJ3iT16Czj| Ultimate Doombuilder Tutorials by Bridgeburner]] * [[https://youtube.com/playlist?list=PLCE835098C82D8F24&si=c3VJyO7010AW0_2Z| Doombuilder 2 Tutorials by Chubzdoomer]] * [[https://youtube.com/playlist?list=PLuDCrjOek9njK8hXkZmTxaU8PWzjzGql7&si=5R5NcyAeidk4GPjz| ZDoom ACS Scripting Tutorials by Chubzdoomer]] * [[https://youtube.com/playlist?list=PL-36gm0W-VKl89pw9lUfF36TJ28bjrNUn&si=H8rclwM8wWbkBw8g| GZDoom Zscript Tutorials by DavidXNewton]] == Misc/Other == * [[Wiki Syntax]] [[Category:Tutorials And Guides]] e16e0d3d2060c3d8ee559e7a1a96fb92961ec987 Wiki Syntax 0 319 574 437 2025-11-11T14:35:32Z MasterOfDisillusionment 431405 wikitext text/x-wiki If you want to edit or create your own wiki page, you must use the syntax below. == General Syntax == <syntaxhighlight lang="wikitext" style="overflow: auto;"> Headers: = First tier = (Do not use; header 1 is reserved for page titles) == Second tier == === Third tier === ==== Fourth tier ==== ===== Fifth tier ===== ====== Sixth tier ====== Internal Linking: [[Name of target page]] [[Name of target page|The Text to be displayed]] External Linking: [https://site/ The Text to be displayed] Numbered list: # Point one # Point two # Point three ## Point three subpoint one # Point four Bullet list: * First point * Second point * Third point ** Third point, first subpoint * Fourth point Spoiler tag (simple): {{spoiler|This is the spoiler text}} Spoiler tag (multi-line): {{spoiler|block=y|Really long spoiler that spans multiple lines Whatever Whatever Etc. }} </syntaxhighlight> == Infobox Templates == If you need to create a new type of infobox, it's crucial you understand the current method. [[Category:Tutorials And Guides]] f57ecafef5749608246689efac61ce84446db4a3 File:UDMFolder.png 6 347 578 2025-11-11T15:45:41Z MasterOfDisillusionment 431405 wikitext text/x-wiki Where the malefact config files go. 2c7a1dc6600376660444af579035d228e21736e7 580 578 2025-11-11T15:55:26Z MasterOfDisillusionment 431405 Protected "[[File:UDMFolder.png]]": Neded for official tutorials ([Edit=Allow only administrators] (indefinite) [Rename=Allow only administrators] (indefinite) [Upload=Allow only administrators] (indefinite)) wikitext text/x-wiki Where the malefact config files go. 2c7a1dc6600376660444af579035d228e21736e7 File:Tutorial1 2.png 6 348 581 2025-11-11T16:00:47Z MasterOfDisillusionment 431405 wikitext text/x-wiki Images for the first Malefact mapping tutorial. == Licensing == {{License|fairuse}} [[Category:Malefact tutorial 1]] 1448d9ea748f671c8eaa830abc703781881c4144 584 581 2025-11-11T16:03:16Z MasterOfDisillusionment 431405 wikitext text/x-wiki Images for the first Malefact mapping tutorial. == Licensing == {{License|fairuse}} [[Category:Malefact Tutorial Images]] ca9138ae21d187b351847e3ca8118cece7f83d10 File:Tutorial1 3.png 6 349 582 2025-11-11T16:00:47Z MasterOfDisillusionment 431405 wikitext text/x-wiki Images for the first Malefact mapping tutorial. == Licensing == {{License|fairuse}} [[Category:Malefact tutorial 1]] 1448d9ea748f671c8eaa830abc703781881c4144 583 582 2025-11-11T16:03:08Z MasterOfDisillusionment 431405 wikitext text/x-wiki Images for the first Malefact mapping tutorial. == Licensing == {{License|fairuse}} [[Category:Malefact Tutorial Images]] ca9138ae21d187b351847e3ca8118cece7f83d10 Sector Creation Tutorial 0 350 594 2025-11-12T01:10:03Z MasterOfDisillusionment 431405 Created page with "If you did everything correctly during the last tutorial, you should now be seeing the editor viewport. <Insert Image of viewport.> I should note that we will not be dedicating a separate chapter to the UI; we’ll explain its elements as we go, on a need-to-know basis, so things don’t get bogged down. == Viewport Navigation == You can move around the map space in several ways: * Using the arrow keys on the keyboard. * Hold the spacebar while moving the mouse curs..." wikitext text/x-wiki If you did everything correctly during the last tutorial, you should now be seeing the editor viewport. <Insert Image of viewport.> I should note that we will not be dedicating a separate chapter to the UI; we’ll explain its elements as we go, on a need-to-know basis, so things don’t get bogged down. == Viewport Navigation == You can move around the map space in several ways: * Using the arrow keys on the keyboard. * Hold the spacebar while moving the mouse cursor around. * Zoom in and out using the mouse scroll wheel. == Explaining the Sector Concept == Before you can create anything, you must first understand the concept of ‘sectors’ and how they are used in UDM level editing. Sectors are the fundamental building blocks that define the areas of your map. By editing a sector's properties, you control its floor height, ceiling height, lighting level, textures, and any special behaviors (e.g. damaging floors, flickering lights, etc). Sectors are themselves made up of ‘linedefs’ and ‘vertices’: * Linedefs are the lines that form the boundaries of sectors, connecting vertices to create the map's walls and outlines. They hold properties for the textures seen on their front (and potentially back) sides, and they can be assigned ‘actions’ that trigger events like opening doors, raising lifts, or ending the level when the player crosses or activates them. * Vertices are the most basic component, representing the individual points or ‘corners’ at specific coordinates on the 2D grid. They serve as the endpoints that linedefs connect to, allowing you to define the shape, angles, and layout of all the sectors and lines in your level. == Your First Sector == Now that you know what a sector is, let’s create a few. But first, let’s go over the relevant interfaces and settings you should be familiar with. === Configuring the Grid === A common beginner mistake is not understanding the importance of choosing an appropriate grid size for the right job. Using arbitrary sizes can ruin the tiling for flats and textures, in addition to looking amateurish and clumsy. For most purposes, the following sizes are well suited: * 256x and larger: Only used when sketching out layouts for especially large areas. * 128x: Good for quickly sketching out most rooms or areas. * 64x: The smallest minimum placespace where gameplay can feasibly take place. Good for creating smaller areas or for trimming larger ones. * 32x and smaller: Only used for detailing or specific types of geometry (e.g. windows). Should never be used for creating gameplay spaces unless unavoidable. You can find the grid settings on the UI bar in the lower-right corner. Left-clicking on it will open a context menu where you can select the grid options. If, for any reason, you wish to hide the gridlines (note: the grid is still active, you just can’t see it), you can uncheck the ‘Render Grid’ option in the View menu located in the top-left corner. Alternatively, you can press Alt+G to toggle it on or off. By default, I recommend keeping the grid enabled. <Insert Image of UI bar where the grid is.> === Editing Modes === At the top of the left toolbar, you can find various tools for creating sectors. In practice, however, you usually only need the following three: * Sector Mode * Linedef Mode * Vertices Mode There are more that we’ll look at later, but the three above are sufficient for most use cases. All of them allow you to draw sectors onto the grid; the difference lies in how they let you edit those sectors afterward. For now, start by selecting and enabling Sector Mode, which you can do by left-clicking the corresponding icon or by pressing the S key. <Insert image of Drawing Tools Icons> === Drawing the Sector === Make sure the grid is set to 128 units, then right-click over the part of the grid where you want to start creating your sector. This will automatically place a vertex at that location. As you move the cursor, you’ll notice that a line (the linedef) follows your cursor. Move the cursor to where you want the end of your first wall to be, then left-click. This places a second vertex at that location, and a linedef is automatically generated between it and the previous one, forming a sector boundary (or a wall, in simpler terms). Continue this process until you’re ready to complete the sector, which you do by left-clicking on the original starting vertex. What you see next depends on which view mode is enabled. <Insert gif of sector creation.> === View Modes === Now that you’ve created your first sector, it’s time to talk about view modes, which you can find in the ‘View’ menu on the upper-left toolbar. While there are many, for now you only need to know about the following three: * Wireframe: Renders the map as an untextured wireframe. Useful when you want to focus on layout without being distracted by detailed visuals * Floor Textures: Renders the floor surfaces inside sectors with textures. Useful for checking that flats tile correctly and for splitting sectors when adding detail. * Ceiling Textures: Ditto but for ceilings. <Insert image of View Modes.> For the moment, make sure that you’re using either Wireframe or Floor Textures mode. == Editing Sectors == Now that you’ve created a sector, it’s time to explain how to manipulate it and its subcomponents. === Transforming Sector Components === To move something you’ve already created (whether it’s an entire sector or individual linedefs or vertices), make sure the appropriate mode is selected (e.g. Linedef Mode if you want to move a wall), place the cursor over the component, and then hold down the right mouse button while moving the cursor to drag the element. Anything attached to the element being moved will deform accordingly. This is useful when adjusting the size of a sector, changing the position of corners, or modifying the length of wall sections. You can select multiple elements by left-clicking each one (just be careful not to miss, since clicking on empty space will deselect everything), or by using marquee selection by holding down the left mouse button and dragging a boundary around all the elements you want to select. === Splitting, Combing, and Merging Sectors === Existing sectors can be split, combined, or merged to form larger or smaller subsectors for detailing or gameplay purposes. To split a sector, simply draw a linedef across it. To combine sectors, either move one until it borders another or create a new sector that connects them. Note that ‘combining’ and ‘merging’ sectors are different concepts in this context. Adjacent sectors may look like a single room during gameplay, but they still exist as individual sectors. If you look at the linedef/linedefs separating neighboring sectors, you’ll see that it appears partially transparent. This means no wall textures are rendered on those linedefs (unless specifically told otherwise), and actors such as the player, enemies, or projectiles can pass through them. Linedef properties are a topic in their own right and will be elaborated on in more detail in a future tutorial. Ditto for sector properties. Vertices do not have editable properties. To merge multiple sectors into a single one, make sure each is selected while in Sector Mode. Then open the ‘Sectors’ drop-down menu in the upper-right toolbar and click the ‘Merge Sectors’ option, or simply press Shift-J. Note that the merging process may leave behind leftover vertices, and it’s generally recommended to delete them for the sake of clean topology. To do this, enable Vertices Mode, select the vertices you want to remove, and press the Delete key on your keyboard. The Delete key can also be used to remove any other element, such as sectors, linedefs, or actors. Speaking of additional vertices, this is a good opportunity to mention that you can alter the shape of an existing sector without creating a new one by adding extra vertices to linedefs while in Vertices Mode, giving you more corners to work with that you can drag around to change the shape of the sector. Depending on the situation, this may or may not be the preferred method. Use whatever approach works best for you. == Navigation == [[Malefact Tutorial 1|Previous Tutorial: Installing Prerequisites]] [[Malefact Tutorial 3|Next Tutorial: Texturing]] [[Malefact Mapping Tutorials|Tutorial Index]] [[Category:Tutorials And Guides]] 7e691a5da7ca368b6b6e2292b760f92fbd8751cb 599 594 2025-11-12T21:34:41Z MasterOfDisillusionment 431405 wikitext text/x-wiki If you did everything correctly during the last tutorial, you should now be seeing the editor viewport. <Insert Image of viewport.> I should note that we will not be dedicating a separate chapter to the UI; we’ll explain its elements as we go, on a need-to-know basis, so things don’t get bogged down. == Viewport Navigation == You can move around the map space in several ways: * Using the arrow keys on the keyboard. * Hold the spacebar while moving the mouse cursor around. * Zoom in and out using the mouse scroll wheel. == Explaining the Sector Concept == Before you can create anything, you must first understand the concept of ‘sectors’ and how they are used in UDM level editing. Sectors are the fundamental building blocks that define the areas of your map. By editing a sector's properties, you control its floor height, ceiling height, lighting level, textures, and any special behaviors (e.g. damaging floors, flickering lights, etc). Sectors are themselves made up of ‘linedefs’ and ‘vertices’: * Linedefs are the lines that form the boundaries of sectors, connecting vertices to create the map's walls and outlines. They hold properties for the textures seen on their front (and potentially back) sides, and they can be assigned ‘actions’ that trigger events like opening doors, raising lifts, or ending the level when the player crosses or activates them. * Vertices are the most basic component, representing the individual points or ‘corners’ at specific coordinates on the 2D grid. They serve as the endpoints that linedefs connect to, allowing you to define the shape, angles, and layout of all the sectors and lines in your level. == Your First Sector == Now that you know what a sector is, let’s create a few. But first, let’s go over the relevant interfaces and settings you should be familiar with. === Configuring the Grid === A common beginner mistake is not understanding the importance of choosing an appropriate grid size for the right job. Using arbitrary sizes can ruin the tiling for flats and textures, in addition to looking amateurish and clumsy. For most purposes, the following sizes are well suited: * 256x and larger: Only used when sketching out layouts for especially large areas. * 128x: Good for quickly sketching out most rooms or areas. * 64x: The smallest minimum placespace where gameplay can feasibly take place. Good for creating smaller areas or for trimming larger ones. * 32x and smaller: Only used for detailing or specific types of geometry (e.g. windows). Should never be used for creating gameplay spaces unless unavoidable. You can find the grid settings on the UI bar in the lower-right corner. Left-clicking on it will open a context menu where you can select the grid options. If, for any reason, you wish to hide the gridlines (note: the grid is still active, you just can’t see it), you can uncheck the ‘Render Grid’ option in the View menu located in the top-left corner. Alternatively, you can press Alt+G to toggle it on or off. By default, I recommend keeping the grid enabled. <Insert Image of UI bar where the grid is.> === Editing Modes === At the top of the left toolbar, you can find various tools for creating sectors. In practice, however, you usually only need the following three: * Sector Mode * Linedef Mode * Vertices Mode There are more that we’ll look at later, but the three above are sufficient for most use cases. All of them allow you to draw sectors onto the grid; the difference lies in how they let you edit those sectors afterward. For now, start by selecting and enabling Sector Mode, which you can do by left-clicking the corresponding icon or by pressing the S key. <Insert image of Drawing Tools Icons> === Drawing the Sector === Make sure the grid is set to 128 units, then right-click over the part of the grid where you want to start creating your sector. This will automatically place a vertex at that location. As you move the cursor, you’ll notice that a line (the linedef) follows your cursor. Move the cursor to where you want the end of your first wall to be, then left-click. This places a second vertex at that location, and a linedef is automatically generated between it and the previous one, forming a sector boundary (or a wall, in simpler terms). Continue this process until you’re ready to complete the sector, which you do by left-clicking on the original starting vertex. What you see next depends on which view mode is enabled. <Insert gif of sector creation.> === View Modes === Now that you’ve created your first sector, it’s time to talk about view modes, which you can find in the ‘View’ menu on the upper-left toolbar. While there are many, for now you only need to know about the following three: * Wireframe: Renders the map as an untextured wireframe. Useful when you want to focus on layout without being distracted by detailed visuals * Floor Textures: Renders the floor surfaces inside sectors with textures. Useful for checking that flats tile correctly and for splitting sectors when adding detail. * Ceiling Textures: Ditto but for ceilings. <Insert image of View Modes.> For the moment, make sure that you’re using either Wireframe or Floor Textures mode. == Editing Sectors == Now that you’ve created a sector, it’s time to explain how to manipulate it and its subcomponents. === Transforming Sector Components === To move something you’ve already created (whether it’s an entire sector or individual linedefs or vertices), make sure the appropriate mode is selected (e.g. Linedef Mode if you want to move a wall), place the cursor over the component, and then hold down the right mouse button while moving the cursor to drag the element. Anything attached to the element being moved will deform accordingly. This is useful when adjusting the size of a sector, changing the position of corners, or modifying the length of wall sections. You can select multiple elements by left-clicking each one (just be careful not to miss, since clicking on empty space will deselect everything), or by using marquee selection by holding down the left mouse button and dragging a boundary around all the elements you want to select. === Splitting, Combing, and Merging Sectors === Existing sectors can be split, combined, or merged to form larger or smaller subsectors for detailing or gameplay purposes. To split a sector, simply draw a linedef across it. To combine sectors, either move one until it borders another or create a new sector that connects them. Note that ‘combining’ and ‘merging’ sectors are different concepts in this context. Adjacent sectors may look like a single room during gameplay, but they still exist as individual sectors. If you look at the linedef/linedefs separating neighboring sectors, you’ll see that it appears partially transparent. This means no wall textures are rendered on those linedefs (unless specifically told otherwise), and actors such as the player, enemies, or projectiles can pass through them. Linedef properties are a topic in their own right and will be elaborated on in more detail in a future tutorial. Ditto for sector properties. Vertices do not have editable properties. To merge multiple sectors into a single one, make sure each is selected while in Sector Mode. Then open the ‘Sectors’ drop-down menu in the upper-right toolbar and click the ‘Merge Sectors’ option, or simply press Shift-J. Note that the merging process may leave behind leftover vertices, and it’s generally recommended to delete them for the sake of clean topology. To do this, enable Vertices Mode, select the vertices you want to remove, and press the Delete key on your keyboard. The Delete key can also be used to remove any other element, such as sectors, linedefs, or actors. Speaking of additional vertices, this is a good opportunity to mention that you can alter the shape of an existing sector without creating a new one by adding extra vertices to linedefs while in Vertices Mode, giving you more corners to work with that you can drag around to change the shape of the sector. Depending on the situation, this may or may not be the preferred method. Use whatever approach works best for you. == 3D Visual Mode == So far, you’ve only seen what your map looks like on the 2D grid. To see what it looks like in-game without running the game, you can use UDM’s built-in 3D Visual Mode. To activate Visual Mode, press the Q key on the keyboard or select ‘Visual Mode’ from the Mode drop-down menu in the upper-left toolbar. Once in Visual Mode, you can use the ESDF keys to move and the mouse to look around, just like in a first-person shooter. You can use the G key to enable or disable gravity. Besides allowing you to see what your map looks like, you can also do editing inside Visual Mode, though we’ll cover that later. For the moment, don’t mess around with anything. == Testing Your Map == You should now understand the basics of creating sectors in UDM. But there is still one last thing to do: testing your map. === Adding a Player Start === For your map to run, you need to define where the player spawns. In the same toolbar that contains the Sector Mode tools, you’ll find a mode called ‘Thing Mode’. Enable it. Right-click where you want to place the Player Start. If no other actor has been created yet, a Player Start will be placed by default. If it isn’t, right-click the actor you just placed on the map to open the ‘Edit Thing’ window, then select ‘Player 1 Start’ from the ‘Player Starts’ folder. Note that Malefact is a single-player-only game; unlike Doom, it includes only one Player Start. Depending on your settings, the ‘Edit Thing’ window may open automatically when placing an actor. It’s recommended to disable this option under Tools > Preferences > Editing, where you can uncheck “Edit thing properties when inserting a new thing.” === Run Settings === Use the Tools menu in the upper-left toolbar to open the Game Configuration settings. Make sure the ‘Testing’ tab is open. You’ll see the following settings that must be configured before you can run your map: * Engine: The name you assign to the engine executable used for running your level. Note that this is only the label you give that particular run setting; you can name it whatever you want. * Application: The executable file of the engine (for example, the UZDoom .exe in your Malefact game folder, or whatever source port you’re using) that runs the level. Navigate to the game folder and select it. * Skill Level: Selects the difficulty level used when you test the level. It doesn’t really matter what this is set to, since you can easily change it using the drop-down menu on the test button (see below). There’s also the option to set custom parameters, but you don’t need to worry about that for now. Once you’re happy with the settings, click OK. === Running the Map === On the far right of the top toolbar, there is a green arrow icon labeled ‘Play’. To its right is a smaller icon used for selecting the difficulty level. Click this smaller icon to display all the available difficulty levels. You’ll see two separate sets, each with five settings. You can tell them apart by the cacodemon sprite, with the lower set showing a dead one. The only difference is that the monsters do not spawn when using the settings for the latter set, which can be useful for testing purposes. An extremely important point to keep in mind about these settings is that they list the difficulty levels for Doom, but Malefact does not use those. Doom follows the standard ‘Easy, Medium, Hard’, and so on, whereas Malefact uses only settings 1 and 2 (Normal and Hard). There is no easy mode in Malefact. This means that when you test your Malefact maps, you should run them on the lowest difficulty (setting 1) by default, and switch to setting 2 for the harder version. It is possible to add additional difficulty settings to Malefact through modding, though that is beyond the scope of this tutorial. Select difficulty 1 from the first set, and click the test button. If you followed every previous step correctly, the map should now load automatically. == Navigation == [[Malefact Tutorial 1|Previous Tutorial: Installing Prerequisites]] [[Malefact Tutorial 3|Next Tutorial: Texturing]] [[Malefact Mapping Tutorials|Tutorial Index]] [[Category:Tutorials And Guides]] e984efc508a2fc697206b1111ec0b6de6473e636 Malefact Tutorial 1 0 351 597 2025-11-12T01:11:09Z MasterOfDisillusionment 431405 MasterOfDisillusionment renamed page [[Malefact Tutorial 1]] to [[Installing Prerequisites Tutorial]]: Misspelled title wikitext text/x-wiki #REDIRECT [[Installing Prerequisites Tutorial]] 550d4e69d4b7549798d439b88e45c022cc5f020e File:Tutorial2 1.png 6 352 600 2025-11-12T22:16:32Z MasterOfDisillusionment 431405 wikitext text/x-wiki Images for the Malefact tutorial series, chapter 2 == Licensing == {{License|fairuse}} [[Category:Malefact Tutorial Images]] 3fbbd130bcc410427ec85d43ed79465639c5d06c File:Tutorial2 2.png 6 353 601 2025-11-12T22:16:32Z MasterOfDisillusionment 431405 wikitext text/x-wiki Images for the Malefact tutorial series, chapter 2 == Licensing == {{License|fairuse}} [[Category:Malefact Tutorial Images]] 3fbbd130bcc410427ec85d43ed79465639c5d06c 603 601 2025-11-12T22:25:22Z MasterOfDisillusionment 431405 MasterOfDisillusionment uploaded a new version of [[File:Tutorial2 2.png]] wikitext text/x-wiki Images for the Malefact tutorial series, chapter 2 == Licensing == {{License|fairuse}} [[Category:Malefact Tutorial Images]] 3fbbd130bcc410427ec85d43ed79465639c5d06c File:Tutorial2 3.png 6 354 602 2025-11-12T22:16:33Z MasterOfDisillusionment 431405 wikitext text/x-wiki Images for the Malefact tutorial series, chapter 2 == Licensing == {{License|fairuse}} [[Category:Malefact Tutorial Images]] 3fbbd130bcc410427ec85d43ed79465639c5d06c Sector Creation Tutorial 0 350 604 599 2025-11-12T22:28:42Z MasterOfDisillusionment 431405 wikitext text/x-wiki If you did everything correctly during the last tutorial, you should now be seeing the editor viewport. I should note that we will not be dedicating a separate chapter to the UI; we’ll explain its elements as we go, on a need-to-know basis, so things don’t get bogged down. == Viewport Navigation == You can move around the map space in several ways: * Using the arrow keys on the keyboard. * Hold the spacebar while moving the mouse cursor around. * Zoom in and out using the mouse scroll wheel. [[File:Tutorial2 1.png|thumb|none|The Ultimate Doom Builder interface and viewport.]] == Explaining the Sector Concept == Before you can create anything, you must first understand the concept of ‘sectors’ and how they are used in UDM level editing. Sectors are the fundamental building blocks that define the areas of your map. By editing a sector's properties, you control its floor height, ceiling height, lighting level, textures, and any special behaviors (e.g. damaging floors, flickering lights, etc). Sectors are themselves made up of ‘linedefs’ and ‘vertices’: * Linedefs are the lines that form the boundaries of sectors, connecting vertices to create the map's walls and outlines. They hold properties for the textures seen on their front (and potentially back) sides, and they can be assigned ‘actions’ that trigger events like opening doors, raising lifts, or ending the level when the player crosses or activates them. * Vertices are the most basic component, representing the individual points or ‘corners’ at specific coordinates on the 2D grid. They serve as the endpoints that linedefs connect to, allowing you to define the shape, angles, and layout of all the sectors and lines in your level. == Your First Sector == Now that you know what a sector is, let’s create a few. But first, let’s go over the relevant interfaces and settings you should be familiar with. === Configuring the Grid === A common beginner mistake is not understanding the importance of choosing an appropriate grid size for the right job. Using arbitrary sizes can ruin the tiling for flats and textures, in addition to looking amateurish and clumsy. For most purposes, the following sizes are well suited: * 256x and larger: Only used when sketching out layouts for especially large areas. * 128x: Good for quickly sketching out most rooms or areas. * 64x: The smallest minimum placespace where gameplay can feasibly take place. Good for creating smaller areas or for trimming larger ones. * 32x and smaller: Only used for detailing or specific types of geometry (e.g. windows). Should never be used for creating gameplay spaces unless unavoidable. You can find the grid settings on the UI bar in the lower-right corner. Left-clicking on it will open a context menu where you can select the grid options. If, for any reason, you wish to hide the gridlines (note: the grid is still active, you just can’t see it), you can uncheck the ‘Render Grid’ option in the View menu located in the top-left corner. Alternatively, you can press Alt+G to toggle it on or off. By default, I recommend keeping the grid enabled. [[File:Tutorial2 3.png|thumb|none|You can change the grid size using the controls in the bottom-left corner.]] === Editing Modes === At the top of the left toolbar, you can find various tools for creating sectors. In practice, however, you usually only need the following three: * Sector Mode * Linedef Mode * Vertices Mode There are more that we’ll look at later, but the three above are sufficient for most use cases. All of them allow you to draw sectors onto the grid; the difference lies in how they let you edit those sectors afterward. For now, start by selecting and enabling Sector Mode, which you can do by left-clicking the corresponding icon or by pressing the S key. [[File:Tutorial2 2.png|thumb|none|From top to bottom: Vertices Mode, Linedef Mode, Sector Mode, Thing Creation Mode.]] === Drawing the Sector === Make sure the grid is set to 128 units, then right-click over the part of the grid where you want to start creating your sector. This will automatically place a vertex at that location. As you move the cursor, you’ll notice that a line (the linedef) follows your cursor. Move the cursor to where you want the end of your first wall to be, then left-click. This places a second vertex at that location, and a linedef is automatically generated between it and the previous one, forming a sector boundary (or a wall, in simpler terms). Continue this process until you’re ready to complete the sector, which you do by left-clicking on the original starting vertex. What you see next depends on which view mode is enabled. <Insert gif of sector creation.> === View Modes === Now that you’ve created your first sector, it’s time to talk about view modes, which you can find in the ‘View’ menu on the upper-left toolbar. While there are many, for now you only need to know about the following three: * Wireframe: Renders the map as an untextured wireframe. Useful when you want to focus on layout without being distracted by detailed visuals * Floor Textures: Renders the floor surfaces inside sectors with textures. Useful for checking that flats tile correctly and for splitting sectors when adding detail. * Ceiling Textures: Ditto but for ceilings. <Insert image of View Modes.> For the moment, make sure that you’re using either Wireframe or Floor Textures mode. == Editing Sectors == Now that you’ve created a sector, it’s time to explain how to manipulate it and its subcomponents. === Transforming Sector Components === To move something you’ve already created (whether it’s an entire sector or individual linedefs or vertices), make sure the appropriate mode is selected (e.g. Linedef Mode if you want to move a wall), place the cursor over the component, and then hold down the right mouse button while moving the cursor to drag the element. Anything attached to the element being moved will deform accordingly. This is useful when adjusting the size of a sector, changing the position of corners, or modifying the length of wall sections. You can select multiple elements by left-clicking each one (just be careful not to miss, since clicking on empty space will deselect everything), or by using marquee selection by holding down the left mouse button and dragging a boundary around all the elements you want to select. === Splitting, Combing, and Merging Sectors === Existing sectors can be split, combined, or merged to form larger or smaller subsectors for detailing or gameplay purposes. To split a sector, simply draw a linedef across it. To combine sectors, either move one until it borders another or create a new sector that connects them. Note that ‘combining’ and ‘merging’ sectors are different concepts in this context. Adjacent sectors may look like a single room during gameplay, but they still exist as individual sectors. If you look at the linedef/linedefs separating neighboring sectors, you’ll see that it appears partially transparent. This means no wall textures are rendered on those linedefs (unless specifically told otherwise), and actors such as the player, enemies, or projectiles can pass through them. Linedef properties are a topic in their own right and will be elaborated on in more detail in a future tutorial. Ditto for sector properties. Vertices do not have editable properties. To merge multiple sectors into a single one, make sure each is selected while in Sector Mode. Then open the ‘Sectors’ drop-down menu in the upper-right toolbar and click the ‘Merge Sectors’ option, or simply press Shift-J. Note that the merging process may leave behind leftover vertices, and it’s generally recommended to delete them for the sake of clean topology. To do this, enable Vertices Mode, select the vertices you want to remove, and press the Delete key on your keyboard. The Delete key can also be used to remove any other element, such as sectors, linedefs, or actors. Speaking of additional vertices, this is a good opportunity to mention that you can alter the shape of an existing sector without creating a new one by adding extra vertices to linedefs while in Vertices Mode, giving you more corners to work with that you can drag around to change the shape of the sector. Depending on the situation, this may or may not be the preferred method. Use whatever approach works best for you. == 3D Visual Mode == So far, you’ve only seen what your map looks like on the 2D grid. To see what it looks like in-game without running the game, you can use UDM’s built-in 3D Visual Mode. To activate Visual Mode, press the Q key on the keyboard or select ‘Visual Mode’ from the Mode drop-down menu in the upper-left toolbar. Once in Visual Mode, you can use the ESDF keys to move and the mouse to look around, just like in a first-person shooter. You can use the G key to enable or disable gravity. Besides allowing you to see what your map looks like, you can also do editing inside Visual Mode, though we’ll cover that later. For the moment, don’t mess around with anything. == Testing Your Map == You should now understand the basics of creating sectors in UDM. But there is still one last thing to do: testing your map. === Adding a Player Start === For your map to run, you need to define where the player spawns. In the same toolbar that contains the Sector Mode tools, you’ll find a mode called ‘Thing Mode’. Enable it. Right-click where you want to place the Player Start. If no other actor has been created yet, a Player Start will be placed by default. If it isn’t, right-click the actor you just placed on the map to open the ‘Edit Thing’ window, then select ‘Player 1 Start’ from the ‘Player Starts’ folder. Note that Malefact is a single-player-only game; unlike Doom, it includes only one Player Start. Depending on your settings, the ‘Edit Thing’ window may open automatically when placing an actor. It’s recommended to disable this option under Tools > Preferences > Editing, where you can uncheck “Edit thing properties when inserting a new thing.” === Run Settings === Use the Tools menu in the upper-left toolbar to open the Game Configuration settings. Make sure the ‘Testing’ tab is open. You’ll see the following settings that must be configured before you can run your map: * Engine: The name you assign to the engine executable used for running your level. Note that this is only the label you give that particular run setting; you can name it whatever you want. * Application: The executable file of the engine (for example, the UZDoom .exe in your Malefact game folder, or whatever source port you’re using) that runs the level. Navigate to the game folder and select it. * Skill Level: Selects the difficulty level used when you test the level. It doesn’t really matter what this is set to, since you can easily change it using the drop-down menu on the test button (see below). There’s also the option to set custom parameters, but you don’t need to worry about that for now. Once you’re happy with the settings, click OK. === Running the Map === On the far right of the top toolbar, there is a green arrow icon labeled ‘Play’. To its right is a smaller icon used for selecting the difficulty level. Click this smaller icon to display all the available difficulty levels. You’ll see two separate sets, each with five settings. You can tell them apart by the cacodemon sprite, with the lower set showing a dead one. The only difference is that the monsters do not spawn when using the settings for the latter set, which can be useful for testing purposes. An extremely important point to keep in mind about these settings is that they list the difficulty levels for Doom, but Malefact does not use those. Doom follows the standard ‘Easy, Medium, Hard’, and so on, whereas Malefact uses only settings 1 and 2 (Normal and Hard). There is no easy mode in Malefact. This means that when you test your Malefact maps, you should run them on the lowest difficulty (setting 1) by default, and switch to setting 2 for the harder version. It is possible to add additional difficulty settings to Malefact through modding, though that is beyond the scope of this tutorial. Select difficulty 1 from the first set, and click the test button. If you followed every previous step correctly, the map should now load automatically. == Navigation == [[Malefact Tutorial 1|Previous Tutorial: Installing Prerequisites]] [[Malefact Tutorial 3|Next Tutorial: Texturing]] [[Malefact Mapping Tutorials|Tutorial Index]] [[Category:Tutorials And Guides]] efa3e9695f377f14644e0add75ddfedfab1d00eb 607 604 2025-11-12T22:39:27Z MasterOfDisillusionment 431405 wikitext text/x-wiki If you did everything correctly during the last tutorial, you should now be seeing the editor viewport. I should note that we will not be dedicating a separate chapter to the UI; we’ll explain its elements as we go, on a need-to-know basis, so things don’t get bogged down. == Viewport Navigation == You can move around the map space in several ways: * Using the arrow keys on the keyboard. * Hold the spacebar while moving the mouse cursor around. * Zoom in and out using the mouse scroll wheel. [[File:Tutorial2 1.png|thumb|none|The Ultimate Doom Builder interface and viewport.]] == Explaining the Sector Concept == Before you can create anything, you must first understand the concept of ‘sectors’ and how they are used in UDM level editing. Sectors are the fundamental building blocks that define the areas of your map. By editing a sector's properties, you control its floor height, ceiling height, lighting level, textures, and any special behaviors (e.g. damaging floors, flickering lights, etc). Sectors are themselves made up of ‘linedefs’ and ‘vertices’: * Linedefs are the lines that form the boundaries of sectors, connecting vertices to create the map's walls and outlines. They hold properties for the textures seen on their front (and potentially back) sides, and they can be assigned ‘actions’ that trigger events like opening doors, raising lifts, or ending the level when the player crosses or activates them. * Vertices are the most basic component, representing the individual points or ‘corners’ at specific coordinates on the 2D grid. They serve as the endpoints that linedefs connect to, allowing you to define the shape, angles, and layout of all the sectors and lines in your level. == Your First Sector == Now that you know what a sector is, let’s create a few. But first, let’s go over the relevant interfaces and settings you should be familiar with. === Configuring the Grid === A common beginner mistake is not understanding the importance of choosing an appropriate grid size for the right job. Using arbitrary sizes can ruin the tiling for flats and textures, in addition to looking amateurish and clumsy. For most purposes, the following sizes are well suited: * 256x and larger: Only used when sketching out layouts for especially large areas. * 128x: Good for quickly sketching out most rooms or areas. * 64x: The smallest minimum placespace where gameplay can feasibly take place. Good for creating smaller areas or for trimming larger ones. * 32x and smaller: Only used for detailing or specific types of geometry (e.g. windows). Should never be used for creating gameplay spaces unless unavoidable. You can find the grid settings on the UI bar in the lower-right corner. Left-clicking on it will open a context menu where you can select the grid options. If, for any reason, you wish to hide the gridlines (note: the grid is still active, you just can’t see it), you can uncheck the ‘Render Grid’ option in the View menu located in the top-left corner. Alternatively, you can press Alt+G to toggle it on or off. By default, I recommend keeping the grid enabled. [[File:Tutorial2 3.png|thumb|none|You can change the grid size using the controls in the bottom-left corner.]] === Editing Modes === At the top of the left toolbar, you can find various tools for creating sectors. In practice, however, you usually only need the following three: * Sector Mode * Linedef Mode * Vertices Mode There are more that we’ll look at later, but the three above are sufficient for most use cases. All of them allow you to draw sectors onto the grid; the difference lies in how they let you edit those sectors afterward. For now, start by selecting and enabling Sector Mode, which you can do by left-clicking the corresponding icon or by pressing the S key. [[File:Tutorial2 2.png|thumb|none|From top to bottom: Vertices Mode, Linedef Mode, Sector Mode, Thing Creation Mode.]] === Drawing the Sector === Make sure the grid is set to 128 units, then right-click over the part of the grid where you want to start creating your sector. This will automatically place a vertex at that location. As you move the cursor, you’ll notice that a line (the linedef) follows your cursor. Move the cursor to where you want the end of your first wall to be, then left-click. This places a second vertex at that location, and a linedef is automatically generated between it and the previous one, forming a sector boundary (or a wall, in simpler terms). Continue this process until you’re ready to complete the sector, which you do by left-clicking on the original starting vertex. What you see next depends on which view mode is enabled. [[File:Tutorial2 4.gif|thumb|none|A demonstration of sector creation while in Sector Mode.]] === View Modes === Now that you’ve created your first sector, it’s time to talk about view modes, which you can find in the ‘View’ menu on the upper-left toolbar. While there are many, for now you only need to know about the following three: * Wireframe: Renders the map as an untextured wireframe. Useful when you want to focus on layout without being distracted by detailed visuals * Floor Textures: Renders the floor surfaces inside sectors with textures. Useful for checking that flats tile correctly and for splitting sectors when adding detail. * Ceiling Textures: Ditto but for ceilings. <Insert image of View Modes.> For the moment, make sure that you’re using either Wireframe or Floor Textures mode. == Editing Sectors == Now that you’ve created a sector, it’s time to explain how to manipulate it and its subcomponents. === Transforming Sector Components === To move something you’ve already created (whether it’s an entire sector or individual linedefs or vertices), make sure the appropriate mode is selected (e.g. Linedef Mode if you want to move a wall), place the cursor over the component, and then hold down the right mouse button while moving the cursor to drag the element. Anything attached to the element being moved will deform accordingly. This is useful when adjusting the size of a sector, changing the position of corners, or modifying the length of wall sections. You can select multiple elements by left-clicking each one (just be careful not to miss, since clicking on empty space will deselect everything), or by using marquee selection by holding down the left mouse button and dragging a boundary around all the elements you want to select. === Splitting, Combing, and Merging Sectors === Existing sectors can be split, combined, or merged to form larger or smaller subsectors for detailing or gameplay purposes. To split a sector, simply draw a linedef across it. To combine sectors, either move one until it borders another or create a new sector that connects them. Note that ‘combining’ and ‘merging’ sectors are different concepts in this context. Adjacent sectors may look like a single room during gameplay, but they still exist as individual sectors. If you look at the linedef/linedefs separating neighboring sectors, you’ll see that it appears partially transparent. This means no wall textures are rendered on those linedefs (unless specifically told otherwise), and actors such as the player, enemies, or projectiles can pass through them. Linedef properties are a topic in their own right and will be elaborated on in more detail in a future tutorial. Ditto for sector properties. Vertices do not have editable properties. To merge multiple sectors into a single one, make sure each is selected while in Sector Mode. Then open the ‘Sectors’ drop-down menu in the upper-right toolbar and click the ‘Merge Sectors’ option, or simply press Shift-J. Note that the merging process may leave behind leftover vertices, and it’s generally recommended to delete them for the sake of clean topology. To do this, enable Vertices Mode, select the vertices you want to remove, and press the Delete key on your keyboard. The Delete key can also be used to remove any other element, such as sectors, linedefs, or actors. Speaking of additional vertices, this is a good opportunity to mention that you can alter the shape of an existing sector without creating a new one by adding extra vertices to linedefs while in Vertices Mode, giving you more corners to work with that you can drag around to change the shape of the sector. Depending on the situation, this may or may not be the preferred method. Use whatever approach works best for you. == 3D Visual Mode == So far, you’ve only seen what your map looks like on the 2D grid. To see what it looks like in-game without running the game, you can use UDM’s built-in 3D Visual Mode. To activate Visual Mode, press the Q key on the keyboard or select ‘Visual Mode’ from the Mode drop-down menu in the upper-left toolbar. Once in Visual Mode, you can use the ESDF keys to move and the mouse to look around, just like in a first-person shooter. You can use the G key to enable or disable gravity. Besides allowing you to see what your map looks like, you can also do editing inside Visual Mode, though we’ll cover that later. For the moment, don’t mess around with anything. == Testing Your Map == You should now understand the basics of creating sectors in UDM. But there is still one last thing to do: testing your map. === Adding a Player Start === For your map to run, you need to define where the player spawns. In the same toolbar that contains the Sector Mode tools, you’ll find a mode called ‘Thing Mode’. Enable it. Right-click where you want to place the Player Start. If no other actor has been created yet, a Player Start will be placed by default. If it isn’t, right-click the actor you just placed on the map to open the ‘Edit Thing’ window, then select ‘Player 1 Start’ from the ‘Player Starts’ folder. Note that Malefact is a single-player-only game; unlike Doom, it includes only one Player Start. Depending on your settings, the ‘Edit Thing’ window may open automatically when placing an actor. It’s recommended to disable this option under Tools > Preferences > Editing, where you can uncheck “Edit thing properties when inserting a new thing.” === Run Settings === Use the Tools menu in the upper-left toolbar to open the Game Configuration settings. Make sure the ‘Testing’ tab is open. You’ll see the following settings that must be configured before you can run your map: * Engine: The name you assign to the engine executable used for running your level. Note that this is only the label you give that particular run setting; you can name it whatever you want. * Application: The executable file of the engine (for example, the UZDoom .exe in your Malefact game folder, or whatever source port you’re using) that runs the level. Navigate to the game folder and select it. * Skill Level: Selects the difficulty level used when you test the level. It doesn’t really matter what this is set to, since you can easily change it using the drop-down menu on the test button (see below). There’s also the option to set custom parameters, but you don’t need to worry about that for now. Once you’re happy with the settings, click OK. === Running the Map === On the far right of the top toolbar, there is a green arrow icon labeled ‘Play’. To its right is a smaller icon used for selecting the difficulty level. Click this smaller icon to display all the available difficulty levels. You’ll see two separate sets, each with five settings. You can tell them apart by the cacodemon sprite, with the lower set showing a dead one. The only difference is that the monsters do not spawn when using the settings for the latter set, which can be useful for testing purposes. An extremely important point to keep in mind about these settings is that they list the difficulty levels for Doom, but Malefact does not use those. Doom follows the standard ‘Easy, Medium, Hard’, and so on, whereas Malefact uses only settings 1 and 2 (Normal and Hard). There is no easy mode in Malefact. This means that when you test your Malefact maps, you should run them on the lowest difficulty (setting 1) by default, and switch to setting 2 for the harder version. It is possible to add additional difficulty settings to Malefact through modding, though that is beyond the scope of this tutorial. Select difficulty 1 from the first set, and click the test button. If you followed every previous step correctly, the map should now load automatically. == Navigation == [[Malefact Tutorial 1|Previous Tutorial: Installing Prerequisites]] [[Malefact Tutorial 3|Next Tutorial: Texturing]] [[Malefact Mapping Tutorials|Tutorial Index]] [[Category:Tutorials And Guides]] ff8542013260029c17273ba1c02d600f0659ca10 608 607 2025-11-12T22:44:53Z MasterOfDisillusionment 431405 wikitext text/x-wiki If you did everything correctly during the last tutorial, you should now be seeing the editor viewport. I should note that we will not be dedicating a separate chapter to the UI; we’ll explain its elements as we go, on a need-to-know basis, so things don’t get bogged down. == Viewport Navigation == You can move around the map space in several ways: * Using the arrow keys on the keyboard. * Hold the spacebar while moving the mouse cursor around. * Zoom in and out using the mouse scroll wheel. [[File:Tutorial2 1.png|thumb|none|The Ultimate Doom Builder interface and viewport.]] == Explaining the Sector Concept == Before you can create anything, you must first understand the concept of ‘sectors’ and how they are used in UDM level editing. Sectors are the fundamental building blocks that define the areas of your map. By editing a sector's properties, you control its floor height, ceiling height, lighting level, textures, and any special behaviors (e.g. damaging floors, flickering lights, etc). Sectors are themselves made up of ‘linedefs’ and ‘vertices’: * Linedefs are the lines that form the boundaries of sectors, connecting vertices to create the map's walls and outlines. They hold properties for the textures seen on their front (and potentially back) sides, and they can be assigned ‘actions’ that trigger events like opening doors, raising lifts, or ending the level when the player crosses or activates them. * Vertices are the most basic component, representing the individual points or ‘corners’ at specific coordinates on the 2D grid. They serve as the endpoints that linedefs connect to, allowing you to define the shape, angles, and layout of all the sectors and lines in your level. == Your First Sector == Now that you know what a sector is, let’s create a few. But first, let’s go over the relevant interfaces and settings you should be familiar with. === Configuring the Grid === A common beginner mistake is not understanding the importance of choosing an appropriate grid size for the right job. Using arbitrary sizes can ruin the tiling for flats and textures, in addition to looking amateurish and clumsy. For most purposes, the following sizes are well suited: * 256x and larger: Only used when sketching out layouts for especially large areas. * 128x: Good for quickly sketching out most rooms or areas. * 64x: The smallest minimum placespace where gameplay can feasibly take place. Good for creating smaller areas or for trimming larger ones. * 32x and smaller: Only used for detailing or specific types of geometry (e.g. windows). Should never be used for creating gameplay spaces unless unavoidable. You can find the grid settings on the UI bar in the lower-right corner. Left-clicking on it will open a context menu where you can select the grid options. If, for any reason, you wish to hide the gridlines (note: the grid is still active, you just can’t see it), you can uncheck the ‘Render Grid’ option in the View menu located in the top-left corner. Alternatively, you can press Alt+G to toggle it on or off. By default, I recommend keeping the grid enabled. [[File:Tutorial2 3.png|thumb|none|You can change the grid size using the controls in the bottom-left corner.]] === Editing Modes === At the top of the left toolbar, you can find various tools for creating sectors. In practice, however, you usually only need the following three: * Sector Mode * Linedef Mode * Vertices Mode There are more that we’ll look at later, but the three above are sufficient for most use cases. All of them allow you to draw sectors onto the grid; the difference lies in how they let you edit those sectors afterward. For now, start by selecting and enabling Sector Mode, which you can do by left-clicking the corresponding icon or by pressing the S key. [[File:Tutorial2 2.png|thumb|none|From top to bottom: Vertices Mode, Linedef Mode, Sector Mode, Thing Creation Mode.]] === Drawing the Sector === Make sure the grid is set to 128 units, then right-click over the part of the grid where you want to start creating your sector. This will automatically place a vertex at that location. As you move the cursor, you’ll notice that a line (the linedef) follows your cursor. Move the cursor to where you want the end of your first wall to be, then left-click. This places a second vertex at that location, and a linedef is automatically generated between it and the previous one, forming a sector boundary (or a wall, in simpler terms). Continue this process until you’re ready to complete the sector, which you do by left-clicking on the original starting vertex. What you see next depends on which view mode is enabled. [[File:Tutorial2 4.gif|thumb|none|A demonstration of sector creation while in Sector Mode.]] Do not be concerned if the specific line coloring differs between the preview images and your own setup; linedef colors can be customized in the preferences, and I simply prefer red as my default color. If you’re using the base install of UDM, they’ll probably appear white unless selected. This is inconsequential; the functionality remains the same. === View Modes === Now that you’ve created your first sector, it’s time to talk about view modes, which you can find in the ‘View’ menu on the upper-left toolbar. While there are many, for now you only need to know about the following three: * Wireframe: Renders the map as an untextured wireframe. Useful when you want to focus on layout without being distracted by detailed visuals * Floor Textures: Renders the floor surfaces inside sectors with textures. Useful for checking that flats tile correctly and for splitting sectors when adding detail. * Ceiling Textures: Ditto but for ceilings. <Insert image of View Modes.> For the moment, make sure that you’re using either Wireframe or Floor Textures mode. == Editing Sectors == Now that you’ve created a sector, it’s time to explain how to manipulate it and its subcomponents. === Transforming Sector Components === To move something you’ve already created (whether it’s an entire sector or individual linedefs or vertices), make sure the appropriate mode is selected (e.g. Linedef Mode if you want to move a wall), place the cursor over the component, and then hold down the right mouse button while moving the cursor to drag the element. Anything attached to the element being moved will deform accordingly. This is useful when adjusting the size of a sector, changing the position of corners, or modifying the length of wall sections. You can select multiple elements by left-clicking each one (just be careful not to miss, since clicking on empty space will deselect everything), or by using marquee selection by holding down the left mouse button and dragging a boundary around all the elements you want to select. === Splitting, Combing, and Merging Sectors === Existing sectors can be split, combined, or merged to form larger or smaller subsectors for detailing or gameplay purposes. To split a sector, simply draw a linedef across it. To combine sectors, either move one until it borders another or create a new sector that connects them. Note that ‘combining’ and ‘merging’ sectors are different concepts in this context. Adjacent sectors may look like a single room during gameplay, but they still exist as individual sectors. If you look at the linedef/linedefs separating neighboring sectors, you’ll see that it appears partially transparent. This means no wall textures are rendered on those linedefs (unless specifically told otherwise), and actors such as the player, enemies, or projectiles can pass through them. Linedef properties are a topic in their own right and will be elaborated on in more detail in a future tutorial. Ditto for sector properties. Vertices do not have editable properties. To merge multiple sectors into a single one, make sure each is selected while in Sector Mode. Then open the ‘Sectors’ drop-down menu in the upper-right toolbar and click the ‘Merge Sectors’ option, or simply press Shift-J. Note that the merging process may leave behind leftover vertices, and it’s generally recommended to delete them for the sake of clean topology. To do this, enable Vertices Mode, select the vertices you want to remove, and press the Delete key on your keyboard. The Delete key can also be used to remove any other element, such as sectors, linedefs, or actors. Speaking of additional vertices, this is a good opportunity to mention that you can alter the shape of an existing sector without creating a new one by adding extra vertices to linedefs while in Vertices Mode, giving you more corners to work with that you can drag around to change the shape of the sector. Depending on the situation, this may or may not be the preferred method. Use whatever approach works best for you. == 3D Visual Mode == So far, you’ve only seen what your map looks like on the 2D grid. To see what it looks like in-game without running the game, you can use UDM’s built-in 3D Visual Mode. To activate Visual Mode, press the Q key on the keyboard or select ‘Visual Mode’ from the Mode drop-down menu in the upper-left toolbar. Once in Visual Mode, you can use the ESDF keys to move and the mouse to look around, just like in a first-person shooter. You can use the G key to enable or disable gravity. Besides allowing you to see what your map looks like, you can also do editing inside Visual Mode, though we’ll cover that later. For the moment, don’t mess around with anything. == Testing Your Map == You should now understand the basics of creating sectors in UDM. But there is still one last thing to do: testing your map. === Adding a Player Start === For your map to run, you need to define where the player spawns. In the same toolbar that contains the Sector Mode tools, you’ll find a mode called ‘Thing Mode’. Enable it. Right-click where you want to place the Player Start. If no other actor has been created yet, a Player Start will be placed by default. If it isn’t, right-click the actor you just placed on the map to open the ‘Edit Thing’ window, then select ‘Player 1 Start’ from the ‘Player Starts’ folder. Note that Malefact is a single-player-only game; unlike Doom, it includes only one Player Start. Depending on your settings, the ‘Edit Thing’ window may open automatically when placing an actor. It’s recommended to disable this option under Tools > Preferences > Editing, where you can uncheck “Edit thing properties when inserting a new thing.” === Run Settings === Use the Tools menu in the upper-left toolbar to open the Game Configuration settings. Make sure the ‘Testing’ tab is open. You’ll see the following settings that must be configured before you can run your map: * Engine: The name you assign to the engine executable used for running your level. Note that this is only the label you give that particular run setting; you can name it whatever you want. * Application: The executable file of the engine (for example, the UZDoom .exe in your Malefact game folder, or whatever source port you’re using) that runs the level. Navigate to the game folder and select it. * Skill Level: Selects the difficulty level used when you test the level. It doesn’t really matter what this is set to, since you can easily change it using the drop-down menu on the test button (see below). There’s also the option to set custom parameters, but you don’t need to worry about that for now. Once you’re happy with the settings, click OK. === Running the Map === On the far right of the top toolbar, there is a green arrow icon labeled ‘Play’. To its right is a smaller icon used for selecting the difficulty level. Click this smaller icon to display all the available difficulty levels. You’ll see two separate sets, each with five settings. You can tell them apart by the cacodemon sprite, with the lower set showing a dead one. The only difference is that the monsters do not spawn when using the settings for the latter set, which can be useful for testing purposes. An extremely important point to keep in mind about these settings is that they list the difficulty levels for Doom, but Malefact does not use those. Doom follows the standard ‘Easy, Medium, Hard’, and so on, whereas Malefact uses only settings 1 and 2 (Normal and Hard). There is no easy mode in Malefact. This means that when you test your Malefact maps, you should run them on the lowest difficulty (setting 1) by default, and switch to setting 2 for the harder version. It is possible to add additional difficulty settings to Malefact through modding, though that is beyond the scope of this tutorial. Select difficulty 1 from the first set, and click the test button. If you followed every previous step correctly, the map should now load automatically. == Navigation == [[Malefact Tutorial 1|Previous Tutorial: Installing Prerequisites]] [[Malefact Tutorial 3|Next Tutorial: Texturing]] [[Malefact Mapping Tutorials|Tutorial Index]] [[Category:Tutorials And Guides]] 3404fedb746de2f92a7baac713ad2260b9fbee54 615 608 2025-11-14T13:30:38Z MasterOfDisillusionment 431405 Protected "[[Sector Creation Tutorial]]": Official Malefact Tutorials written by the game's developer. ([Edit=Allow only administrators] (indefinite) [Rename=Allow only administrators] (indefinite)) wikitext text/x-wiki If you did everything correctly during the last tutorial, you should now be seeing the editor viewport. I should note that we will not be dedicating a separate chapter to the UI; we’ll explain its elements as we go, on a need-to-know basis, so things don’t get bogged down. == Viewport Navigation == You can move around the map space in several ways: * Using the arrow keys on the keyboard. * Hold the spacebar while moving the mouse cursor around. * Zoom in and out using the mouse scroll wheel. [[File:Tutorial2 1.png|thumb|none|The Ultimate Doom Builder interface and viewport.]] == Explaining the Sector Concept == Before you can create anything, you must first understand the concept of ‘sectors’ and how they are used in UDM level editing. Sectors are the fundamental building blocks that define the areas of your map. By editing a sector's properties, you control its floor height, ceiling height, lighting level, textures, and any special behaviors (e.g. damaging floors, flickering lights, etc). Sectors are themselves made up of ‘linedefs’ and ‘vertices’: * Linedefs are the lines that form the boundaries of sectors, connecting vertices to create the map's walls and outlines. They hold properties for the textures seen on their front (and potentially back) sides, and they can be assigned ‘actions’ that trigger events like opening doors, raising lifts, or ending the level when the player crosses or activates them. * Vertices are the most basic component, representing the individual points or ‘corners’ at specific coordinates on the 2D grid. They serve as the endpoints that linedefs connect to, allowing you to define the shape, angles, and layout of all the sectors and lines in your level. == Your First Sector == Now that you know what a sector is, let’s create a few. But first, let’s go over the relevant interfaces and settings you should be familiar with. === Configuring the Grid === A common beginner mistake is not understanding the importance of choosing an appropriate grid size for the right job. Using arbitrary sizes can ruin the tiling for flats and textures, in addition to looking amateurish and clumsy. For most purposes, the following sizes are well suited: * 256x and larger: Only used when sketching out layouts for especially large areas. * 128x: Good for quickly sketching out most rooms or areas. * 64x: The smallest minimum placespace where gameplay can feasibly take place. Good for creating smaller areas or for trimming larger ones. * 32x and smaller: Only used for detailing or specific types of geometry (e.g. windows). Should never be used for creating gameplay spaces unless unavoidable. You can find the grid settings on the UI bar in the lower-right corner. Left-clicking on it will open a context menu where you can select the grid options. If, for any reason, you wish to hide the gridlines (note: the grid is still active, you just can’t see it), you can uncheck the ‘Render Grid’ option in the View menu located in the top-left corner. Alternatively, you can press Alt+G to toggle it on or off. By default, I recommend keeping the grid enabled. [[File:Tutorial2 3.png|thumb|none|You can change the grid size using the controls in the bottom-left corner.]] === Editing Modes === At the top of the left toolbar, you can find various tools for creating sectors. In practice, however, you usually only need the following three: * Sector Mode * Linedef Mode * Vertices Mode There are more that we’ll look at later, but the three above are sufficient for most use cases. All of them allow you to draw sectors onto the grid; the difference lies in how they let you edit those sectors afterward. For now, start by selecting and enabling Sector Mode, which you can do by left-clicking the corresponding icon or by pressing the S key. [[File:Tutorial2 2.png|thumb|none|From top to bottom: Vertices Mode, Linedef Mode, Sector Mode, Thing Creation Mode.]] === Drawing the Sector === Make sure the grid is set to 128 units, then right-click over the part of the grid where you want to start creating your sector. This will automatically place a vertex at that location. As you move the cursor, you’ll notice that a line (the linedef) follows your cursor. Move the cursor to where you want the end of your first wall to be, then left-click. This places a second vertex at that location, and a linedef is automatically generated between it and the previous one, forming a sector boundary (or a wall, in simpler terms). Continue this process until you’re ready to complete the sector, which you do by left-clicking on the original starting vertex. What you see next depends on which view mode is enabled. [[File:Tutorial2 4.gif|thumb|none|A demonstration of sector creation while in Sector Mode.]] Do not be concerned if the specific line coloring differs between the preview images and your own setup; linedef colors can be customized in the preferences, and I simply prefer red as my default color. If you’re using the base install of UDM, they’ll probably appear white unless selected. This is inconsequential; the functionality remains the same. === View Modes === Now that you’ve created your first sector, it’s time to talk about view modes, which you can find in the ‘View’ menu on the upper-left toolbar. While there are many, for now you only need to know about the following three: * Wireframe: Renders the map as an untextured wireframe. Useful when you want to focus on layout without being distracted by detailed visuals * Floor Textures: Renders the floor surfaces inside sectors with textures. Useful for checking that flats tile correctly and for splitting sectors when adding detail. * Ceiling Textures: Ditto but for ceilings. <Insert image of View Modes.> For the moment, make sure that you’re using either Wireframe or Floor Textures mode. == Editing Sectors == Now that you’ve created a sector, it’s time to explain how to manipulate it and its subcomponents. === Transforming Sector Components === To move something you’ve already created (whether it’s an entire sector or individual linedefs or vertices), make sure the appropriate mode is selected (e.g. Linedef Mode if you want to move a wall), place the cursor over the component, and then hold down the right mouse button while moving the cursor to drag the element. Anything attached to the element being moved will deform accordingly. This is useful when adjusting the size of a sector, changing the position of corners, or modifying the length of wall sections. You can select multiple elements by left-clicking each one (just be careful not to miss, since clicking on empty space will deselect everything), or by using marquee selection by holding down the left mouse button and dragging a boundary around all the elements you want to select. === Splitting, Combing, and Merging Sectors === Existing sectors can be split, combined, or merged to form larger or smaller subsectors for detailing or gameplay purposes. To split a sector, simply draw a linedef across it. To combine sectors, either move one until it borders another or create a new sector that connects them. Note that ‘combining’ and ‘merging’ sectors are different concepts in this context. Adjacent sectors may look like a single room during gameplay, but they still exist as individual sectors. If you look at the linedef/linedefs separating neighboring sectors, you’ll see that it appears partially transparent. This means no wall textures are rendered on those linedefs (unless specifically told otherwise), and actors such as the player, enemies, or projectiles can pass through them. Linedef properties are a topic in their own right and will be elaborated on in more detail in a future tutorial. Ditto for sector properties. Vertices do not have editable properties. To merge multiple sectors into a single one, make sure each is selected while in Sector Mode. Then open the ‘Sectors’ drop-down menu in the upper-right toolbar and click the ‘Merge Sectors’ option, or simply press Shift-J. Note that the merging process may leave behind leftover vertices, and it’s generally recommended to delete them for the sake of clean topology. To do this, enable Vertices Mode, select the vertices you want to remove, and press the Delete key on your keyboard. The Delete key can also be used to remove any other element, such as sectors, linedefs, or actors. Speaking of additional vertices, this is a good opportunity to mention that you can alter the shape of an existing sector without creating a new one by adding extra vertices to linedefs while in Vertices Mode, giving you more corners to work with that you can drag around to change the shape of the sector. Depending on the situation, this may or may not be the preferred method. Use whatever approach works best for you. == 3D Visual Mode == So far, you’ve only seen what your map looks like on the 2D grid. To see what it looks like in-game without running the game, you can use UDM’s built-in 3D Visual Mode. To activate Visual Mode, press the Q key on the keyboard or select ‘Visual Mode’ from the Mode drop-down menu in the upper-left toolbar. Once in Visual Mode, you can use the ESDF keys to move and the mouse to look around, just like in a first-person shooter. You can use the G key to enable or disable gravity. Besides allowing you to see what your map looks like, you can also do editing inside Visual Mode, though we’ll cover that later. For the moment, don’t mess around with anything. == Testing Your Map == You should now understand the basics of creating sectors in UDM. But there is still one last thing to do: testing your map. === Adding a Player Start === For your map to run, you need to define where the player spawns. In the same toolbar that contains the Sector Mode tools, you’ll find a mode called ‘Thing Mode’. Enable it. Right-click where you want to place the Player Start. If no other actor has been created yet, a Player Start will be placed by default. If it isn’t, right-click the actor you just placed on the map to open the ‘Edit Thing’ window, then select ‘Player 1 Start’ from the ‘Player Starts’ folder. Note that Malefact is a single-player-only game; unlike Doom, it includes only one Player Start. Depending on your settings, the ‘Edit Thing’ window may open automatically when placing an actor. It’s recommended to disable this option under Tools > Preferences > Editing, where you can uncheck “Edit thing properties when inserting a new thing.” === Run Settings === Use the Tools menu in the upper-left toolbar to open the Game Configuration settings. Make sure the ‘Testing’ tab is open. You’ll see the following settings that must be configured before you can run your map: * Engine: The name you assign to the engine executable used for running your level. Note that this is only the label you give that particular run setting; you can name it whatever you want. * Application: The executable file of the engine (for example, the UZDoom .exe in your Malefact game folder, or whatever source port you’re using) that runs the level. Navigate to the game folder and select it. * Skill Level: Selects the difficulty level used when you test the level. It doesn’t really matter what this is set to, since you can easily change it using the drop-down menu on the test button (see below). There’s also the option to set custom parameters, but you don’t need to worry about that for now. Once you’re happy with the settings, click OK. === Running the Map === On the far right of the top toolbar, there is a green arrow icon labeled ‘Play’. To its right is a smaller icon used for selecting the difficulty level. Click this smaller icon to display all the available difficulty levels. You’ll see two separate sets, each with five settings. You can tell them apart by the cacodemon sprite, with the lower set showing a dead one. The only difference is that the monsters do not spawn when using the settings for the latter set, which can be useful for testing purposes. An extremely important point to keep in mind about these settings is that they list the difficulty levels for Doom, but Malefact does not use those. Doom follows the standard ‘Easy, Medium, Hard’, and so on, whereas Malefact uses only settings 1 and 2 (Normal and Hard). There is no easy mode in Malefact. This means that when you test your Malefact maps, you should run them on the lowest difficulty (setting 1) by default, and switch to setting 2 for the harder version. It is possible to add additional difficulty settings to Malefact through modding, though that is beyond the scope of this tutorial. Select difficulty 1 from the first set, and click the test button. If you followed every previous step correctly, the map should now load automatically. == Navigation == [[Malefact Tutorial 1|Previous Tutorial: Installing Prerequisites]] [[Malefact Tutorial 3|Next Tutorial: Texturing]] [[Malefact Mapping Tutorials|Tutorial Index]] [[Category:Tutorials And Guides]] 3404fedb746de2f92a7baac713ad2260b9fbee54 File:Tutorial2 4.gif 6 355 605 2025-11-12T22:37:13Z MasterOfDisillusionment 431405 Sector creation gif wikitext text/x-wiki == Summary == Sector creation gif == Licensing == {{License|fairuse}} fbfb6b4efe5fe6d18b087954bc2043c92b34e446 606 605 2025-11-12T22:39:11Z MasterOfDisillusionment 431405 wikitext text/x-wiki == Summary == Sector creation gif == Licensing == {{License|fairuse}} [[Category:Malefact Tutorial Images]] 3896159d9422b84d1ecabdc960362f4f7e312d0f Mods And Assets 0 316 609 432 2025-11-14T13:00:16Z MasterOfDisillusionment 431405 wikitext text/x-wiki User-created content belonging to any of the curated list of Doom engine games is listed here. Custom assets for use in your own mods are listed here as well. There are three main parent categories: '''Hardcore Originals:''' The official projects of hardcoredoom.com. '''Community Mods''': Mods created by the [[hardcoredoom]] community. '''Endorsed Mods:''' Third-party mods that were not created by the hardcoredoom community. Keep in mind that this is a curated list; do not create pages for mods or content unless they meet a certain minimum threshold for quality. == Hardcore Originals == === Mods === * [[Absolute Doom]] === Level Packs === * Future campaign packs go here. === Assets & Textures === * Future asset packs go here. == Community == === Mods === * [[Ultimate Mortal Kombat DOOMXL]] === Level Packs === * Whatever Campaign 1 == Endorsed == === Mods === * Endorsed mods go here. === Level Packs === * Endorsed level packs go here. == Assets & Textures == These assets can be used in your own mods. Be sure to credit the original author. Note that 'in-house' assets created by the hardcoredoom team should not be listed here but rather in the 'Hardcore Originals' section above. === Graphics & Textures === * Place items here. === Music & Audio === * Place items here. === Weapons & Pickups === * Place items here. === Enemies & Monsters === * Place items here. === Props === * Place items here. [[Category:Mods And Assets]] cb120a0b6dcaecdf6f8166c8917b180059ce03a1 610 609 2025-11-14T13:22:47Z MasterOfDisillusionment 431405 wikitext text/x-wiki User-created content is listed here. Keep in mind that this is a curated list; do not create pages for mods or content unless they meet a minimum quality threshold. Furthermore, only content for a [[Game Information|select list of games]] may be listed. Do not include games or mods for other titles such as Quake or Half-Life. The following games are currently supported: * Doom/Doom II/Final Doom * Doom 64 (TCs & Remaster) * Heretic * Malefact (once released) == Hardcore Originals == The official projects of hardcoredoom.com. === Mods === * [[Absolute Doom]] === Level Packs === * Future campaign packs go here. === Assets & Textures === * Future asset packs go here. == Community == Mods created by the [[hardcoredoom]] community. === Mods === * [[Ultimate Mortal Kombat DOOMXL]] === Level Packs === * Whatever Campaign 1 == Endorsed == Third-party mods that were not created by the hardcoredoom community. === Mods === * Endorsed mods go here. === Level Packs === * Endorsed level packs go here. === Assets & Textures === * Endorsed asset packs go here [[Category:Mods And Assets]] d23c08d9450041814732ca33a557f749051e586d 611 610 2025-11-14T13:23:21Z MasterOfDisillusionment 431405 wikitext text/x-wiki User-created content is listed here. Keep in mind that this is a curated list; do not create pages for mods or content unless they meet a minimum quality threshold. Furthermore, only content for a [[Game Information|select list of games]] may be listed. Do not include games or mods for other titles such as Quake or Half-Life. The following games are currently supported: * Doom/Doom II/Final Doom * Doom 64 (TCs & Remaster) * Heretic * Malefact (once released) == Hardcore Originals == The official projects of hardcoredoom.com. === Mods === * [[Absolute Doom]] === Level Packs === * Future campaign packs go here. === Assets & Textures === * Future asset packs go here. == Community == Mods created by the [[hardcoredoom]] community. === Mods === * [[Ultimate Mortal Kombat DOOMXL]] === Level Packs === * Whatever Campaign 1 == Endorsed == Third-party mods that were not created by the hardcoredoom community. === Mods === * Endorsed mods go here. === Level Packs === * Endorsed level packs go here. === Assets & Textures === * Endorsed asset packs go here [[Category:Mods And Assets]] 9feb3837bfe9a4705851f061ae3fa69aab03e7ad Game Information 0 315 612 564 2025-11-14T13:23:48Z MasterOfDisillusionment 431405 wikitext text/x-wiki Relevant Doom engine games are listed on this page along with other game information. == Games == === Classic === The original classics from the 90s. * [[Doom]]: Doom is a first person shooter action game created by Id Software and published in 1993. * [[Heretic]]: A fantasy version of Doom. === Classic === Neo-boomer shooters created using a modified version of the Doom engine (e.g. UZDoom/GZDoom). * [[Malefact]]: Malefact is a fantasy horror boomer shooter in development by GoreMaxxed Productions. The project is led by hardcore_gamer, with a demo version expected to release in Q1 2026. The game is built on the UZDoom engine. == Actors & Assets == To view information about specific actors in individual games or mods, visit the pages below. * [[Weapons]]: Weapons usable by the player. * [[Items]]: Pickups & Power-ups the player can collect. * [[Enemies]]: Enemies the player faces. [[Category:Game Information]] d1a4ccd486744d01d092dd922cb1fb3f74fe8801 Tutorials And Guides 0 317 613 570 2025-11-14T13:23:56Z MasterOfDisillusionment 431405 wikitext text/x-wiki If you're a newcomer to modding or mapping using the UZDoom engine, this page contains useful resources for getting started. == Guides & Tutorials == Guides created by our own community. === [[Malefact Mapping Tutorials]] === A level design guide for Malefact, geared toward newcomers to the game, written by the game's lead developer and level designer. == Third Party Guides & Tutorials == === Level Editing & Scripting === Guides created outside our community. Note: While Doom Builder 2 is considered defunct in favor of Ultimate Doom Builder, most general functionality carries over. Just keep in mind that there may be some minor differences when watching older tutorial videos. * [[https://youtube.com/playlist?list=PLQrQ055Wd7p77pBCmTQT6kW-K8Plmw_D-&si=DHhSQQcJ3iT16Czj| Ultimate Doombuilder Tutorials by Bridgeburner]] * [[https://youtube.com/playlist?list=PLCE835098C82D8F24&si=c3VJyO7010AW0_2Z| Doombuilder 2 Tutorials by Chubzdoomer]] * [[https://youtube.com/playlist?list=PLuDCrjOek9njK8hXkZmTxaU8PWzjzGql7&si=5R5NcyAeidk4GPjz| ZDoom ACS Scripting Tutorials by Chubzdoomer]] * [[https://youtube.com/playlist?list=PL-36gm0W-VKl89pw9lUfF36TJ28bjrNUn&si=H8rclwM8wWbkBw8g| GZDoom Zscript Tutorials by DavidXNewton]] == Misc/Other == * [[Wiki Syntax]] [[Category:Tutorials And Guides]] e9bc49492b1cbaf789cb985e216ae0d8e2994246 Boom Tropes 0 318 614 560 2025-11-14T13:24:04Z MasterOfDisillusionment 431405 wikitext text/x-wiki Boom Tropes is an archive of recurring design elements, level setups, and architecture patterns found in classic FPS games and their mods. Besides being fun to browse, the tropes can also be a potentially useful source of inspiration for level designers since these tropes can be easily incorporated into their own designs. == Encounter Design == Any tropes related to monster placement and combat setups go here. * [[Idle Monster]]: A monster that remains inactive until it sees the player. * [[Door Ambush]]: A monster that waits behind a door. * [[Lift Ambush]]: A monster that waits on top of a platform or lift. * [[Turret Monster]]: A projectile or hitscan monster that’s nested onto an elevated space or platform. * [[Alerted Monster]]: Like an idle monster except it’s not deaf; it can be awoken by player’s gunfire without a direct line of sight. * [[Dropwall Trap]]: A wall or section of a wall that lowers vertically to reveal a new area with an enemy or multiple enemies. == Area Layouts == Tropes related to map design and layouts are listed here. ''Note: This section is not for detailing techniques, which have their own section below.'' * [[Hub Area]]: An area with three or more entry points. * [[Dead-end Area]]: A area with a single entry point. * [[Corridor Area]]: An area with two entry points. * [[Coupler Area]]: An area used to bridge two adjacent areas. * [[Maze Area]]: An area consisting of a maze the player must navigate through. * [[Perimeter Area]]: An area that borders and or envelopes another area or areas, often used to represent exterior locations. == Item Tropes == Tropes related to items, power-ups, and their use in mods and maps are listed here. * [[Pickup Trap]]: A pickup triggers a trap when collected. * [[Taunting Pickup]]: A pickup item, often a power-up or weapon, taunts the player with its presence but seems unreachable at first glance. == Doors, Lifts, and Teleporters == Tropes involving interactive elements, like doors, switches, teleporters, etc, are listed here. * [[Teleporter]]: A linedef that teleports the player or monster someplace else when crossed. * [[Door]]: An interactive door that the player and or monsters can open. * [[Switch Door]]: A door that can only be opened with a switch. * [[Timed Door]]: A door that stays open for a predetermined period before closing and requiring reactivation. * [[Shootable Door]]: A door that only opens when dealt damage by the player's weapons or a stray projectile/attack. == Themes & Locations == Common settings and locations of levels. Note that 'theme' is considered distinct from 'location'; a military outpost can belong to the Military Theme, but not every map with a military theme necessarily takes place on an outpost. === Themes === * [[Military Theme]]: Military locations like army bases. * [[Industrial Theme]]: Industrial environments like warehouses and factories. * [[Urban Theme]]: City and urban environments. * [[Technology Theme]]: High-tech and science fiction esque settings like research labs and spaceships. * [[Hell Theme]]: Locations set in hell or hellish environments. === Locations - Military === * [[Army Base Level]]: Military bases and outposts/garrisons. * [[Warzone Level]]: Levels taking place in war-torn locations and battlefields. === Locations - Industrial === * [[Warehouse Level]]: Warehouse complex and storage facilities. * [[Train Level]]: A (usually) liner train level. === Locations - Urban === * [[Downtown Level]]: City downtown area. * [[Suburb Level]]: City suburb area. === Locations - Technology === * [[Spaceship Level]]: A level taking place on a spaceship. * [[Lab Level]] === Locations - Hell === * [[Hell Gate Level]]: A level representing the literal gates of hell. * [[River Styx Level]]: The river Styx from Greek mythology. == Detailing == Tropes related to the process of adding visual elements that enhance realism and atmosphere are listed here. * [[Decorative Door Detail]]: A purely decorative door that cannot be opened. * [[Indented section Detail]]: A section of wall or surface is pushed inward to create depth and visual interest. * [[Protruding section Detail]]: A section of wall or surface is pushed outward to create depth and visual interest. * [[Greeble Detail]]: Small-scale decorative geometry, texture work, and props used to make environments look more intricate and believable. * [[Crates And Barrels Detail]]: Storage containers, usually made from wood or alloy. [[Category:Boom Tropes]] bf2d3952f66cf663f4c7fd897f5da4b5d98002b3